public class DeadLock {
public static Object Chopstick_1 = new Object();
public static Object Chopstick_2 = new Object();
public static void main(String[] args) {
final DeadLock deadLock = new DeadLock();
// 第一个线程
new Thread(new Runnable() {
public void run() {
try {
synchronized (Chopstick_1) {
System.out.println("甲得到筷子1");
Thread.sleep(1000); // 当前线程睡一会,让另外一个线程保证能得到Chopstick_2的执行权
synchronized (Chopstick_2) {
System.out.println("甲得到筷子2");
}
}
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}).start();
// 第二个线程
new Thread(new Runnable() {
public void run() {
try {
synchronized (Chopstick_2) {
System.out.println("乙得到筷子2");
Thread.sleep(1000); // 当前线程睡一会,让另外一个线程保证能得到Chopstick_1的执行权
synchronized (Chopstick_1) {
System.out.println("乙得到筷子1");
}
}
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}).start();
}
}