一个奇怪的死锁程序!!!
我写了一个关于死锁的程序,但是当运行时却没有出现死锁!请大家帮我看一下是哪出了问题?
public class TestDeadLock implements Runnable{
static Object o1 = new Object();
static Object o2 = new Object();
public int flag ;
public static void main(String[] args) {
TestDeadLock td1 = new TestDeadLock();
Thread t1 = new Thread(td1);
td1.flag = 0;
t1.start();
Thread t2 = new Thread(td1);
td1.flag = 1;
t2.start();
}
public void run() {
if(flag == 1) {
System.out.println("The flag = "+flag);
synchronized(o1) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized(o2) {
System.out.println("The first is finished!");
}
}
}
else if(flag == 0) {
System.out.println("The flag = "+flag);
synchronized(o2) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized(o1) {
System.out.println("The second is finished!");
}
}
}
}
}