黑马程序员技术交流社区
标题:
死锁问题 高手进
[打印本页]
作者:
付鹏
时间:
2012-3-17 03:44
标题:
死锁问题 高手进
public class DidSynchronized {
public static void main(String[] args) {
Thread a = new Thread(new xiancheng(true));
Thread b = new Thread(new xiancheng(false));
a.start();
b.start();
}
}
class xiancheng implements Runnable {
static boolean flag;
xiancheng(boolean flag) {
this.flag = flag;
}
public void run() {
if(flag) {
while(true){
synchronized(Mylock.obj1) {
System.out.println("if-----obj1");
synchronized(Mylock.obj2) {
System.out.println("if-----obj2");
}
}
}
}
else {
while(true){
synchronized(Mylock.obj2) {
System.out.println("-----obj2");
synchronized(Mylock.obj1) {
System.out.println("else-----obj1");
}
}
}
}
}
}
class Mylock {
static Object obj1 = new Object();
static Object obj2 = new Object();
}
这个死锁为什么锁不上 谁帮看下
作者:
刘基军
时间:
2012-3-17 08:19
Thread a = new Thread(new xiancheng(true));
Thread b = new Thread(new xiancheng(false));
虽然你创建了两个xiancheng对象,但是:
static boolean flag;
flag是静态的,所有的对象都是共用同一个flag,就造成两个线程不可能同时进入if和elseif。
要想达到死锁的目的,建议将代码修改为:
static boolean flag;
改为:
boolean flag;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2