使用线程模拟死锁情形

it2022-05-05  156

(转自南瓜皮的网屋)

死锁问题是并发处理的一种典型错误情况,下面的代码演示了这个情形:

public class TestDeadLock implements Runnable {

public int flag = 1;

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

public void run() {

System.out.println("flag=" + flag);

if(flag == 1) {

synchronized(o1) {

try {

Thread.sleep(500);

} catch (Exception e) {

e.printStackTrace();

}

synchronized(o2) {

System.out.println("1");

}

}

}

if(flag == 0) {

synchronized(o2) {

try {

Thread.sleep(500);

} catch (Exception e) {

e.printStackTrace();

}

synchronized(o1) {

System.out.println("0");

}

}

}

}

 

public static void main(String[] args) {

TestDeadLock td1 = new TestDeadLock();

TestDeadLock td2 = new TestDeadLock();

td1.flag = 1;

td2.flag = 0;

Thread t1 = new Thread(td1);

Thread t2 = new Thread(td2);

t1.start();

t2.start();

 

}

}

转载于:https://www.cnblogs.com/pxsbest/archive/2012/08/10/2631698.html

相关资源:各显卡算力对照表!

最新回复(0)