两个线程都持有某一对象的锁,并试图得到对方持有对象的锁,这就造成了死锁
public class DeadLockTest implements Runnable {
static Object o1 = new Object();
static Object o2 = new Object();
boolean flag = true;
public void run() {
// TODO Auto-generated method stub
if(flag == true) {
synchronized(o1) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
synchronized(o2) {
System.out.println("flag == true");
}
}
}
if(flag == false) {
synchronized(o2) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
synchronized (o1) {
System.out.println("flag == false");
}
}
}
}
public static void main(String[] args) {
DeadLockTest t1 = new DeadLockTest();
DeadLockTest t2 = new DeadLockTest();
t1.flag = true;
t2.flag = false;
Thread thread1 = new Thread(t1);
Thread thread2 = new Thread(t2);
thread1.start();
thread2.start();
}
}