package com.jd.schdule;
/**
* 死锁
* @author yfzhangbin
*/
public class DeadlockTest {
public static Object lock1 = new Object();
public static Object lock2 = new Object();
public static void deadlock() {
new Thread(new Runnable() { // 线程T1
public void run() {
synchronized(lock1) {
System.out.println(1);
try {
Thread.sleep(1000);
} catch(Exception e) {
e.printStackTrace();
}
synchronized(lock2) { // 线程T1持有锁lock1,并等待线程T2释放锁lock2
System.out.println(2);
}
}
}
}).start();
new Thread(new Runnable() { // 线程T2
public void run() {
synchronized (lock2) {
System.out.println(3);
synchronized (lock1) { // 线程T2持有锁lock2,等待线程T1释放锁lock1
System.out.println(4);
}
}
}
}).start();
}
public static void main(String[] a){
deadlock();
}
}
输出:
1
3
进入死锁状态,进入无限等待中。