您好,欢迎来到飒榕旅游知识分享网。
搜索
您的当前位置:首页线程死锁代码

线程死锁代码

来源:飒榕旅游知识分享网
线程死锁代码

/**

* @author hollis */

public class JStackDemo {

public static void main(String[] args) {

Thread t1 = new Thread(new DeadLockclass(true));//建⽴⼀个线程 Thread t2 = new Thread(new DeadLockclass(false));//建⽴另⼀个线程 t1.start();//启动⼀个线程 t2.start();//启动另⼀个线程 }}

class DeadLockclass implements Runnable { public boolean falg;// 控制线程 DeadLockclass(boolean falg) { this.falg = falg; }

public void run() { /**

* 如果falg的值为true则调⽤t1线程 */

if (falg) {

while (true) {

synchronized (Suo.o1) {

System.out.println(\"o1 \" + Thread.currentThread().getName()); synchronized (Suo.o2) {

System.out.println(\"o2 \" + Thread.currentThread().getName()); } } } } /**

* 如果falg的值为false则调⽤t2线程 */ else {

while (true) {

synchronized (Suo.o2) {

System.out.println(\"o2 \" + Thread.currentThread().getName()); synchronized (Suo.o1) {

System.out.println(\"o1 \" + Thread.currentThread().getName()); } } } } }}

class Suo {

static Object o1 = new Object(); static Object o2 = new Object();}

import org.springframework.stereotype.Component;

@Component

public class SynchronizedTest {

private static final Object lockA = new Object(); private static final Object lockB = new Object(); /**

* ThreadA先获取lockA,在获取lockB */

private static class ThreadA extends java.lang.Thread { @Override

public void run() { // 获取临界区A

synchronized (lockA) {

System.out.println(\"get lockA success\"); // 模拟耗时操作 try {

Thread.currentThread().setName(\"线程A\"); Thread.sleep(500);

} catch (InterruptedException e) { e.printStackTrace(); }

// 获取临界区B

synchronized (lockB) {

System.out.println(\"get lockB success\"); } } } }

/**

* ThreadB先获取lockB,在获取lockA */

private static class ThreadB extends java.lang.Thread { @Override

public void run() { // 获取临界区A

synchronized (lockB) {

System.out.println(\"get lockB success\"); // 模拟耗时操作 try {

Thread.currentThread().setName(\"线程B\"); Thread.sleep(500);

} catch (InterruptedException e) { e.printStackTrace(); }

// 获取临界区B

synchronized (lockA) {

System.out.println(\"get lockA success\"); } } } }

static {

new ThreadA().start(); new ThreadB().start(); } }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务