public static Object o1 = new Object();
public static Object o2 = new Object();
}
public class DeadLock1 extends Thread {
public void run() {
synchronized (Resource.o1) {
System.out.println("我获取了o1,并对o1加了锁");
try {
sleep(10);
} catch (InterruptedException e) {
}
synchronized (Resource.o2) {
}
System.out.println("我获取了o2,并对o2加了锁");
}
System.out.println("我运行完了,我要释放所有资源:o1和o2");
}
}
public class DeadLock2 extends Thread {
public void run() {
synchronized (Resource.o2) {
System.out.println("我获取了o2,并对o2加了锁");
try {
sleep(10);
} catch (InterruptedException e) {
}
synchronized (Resource.o1) {
System.out.println("我获取了o1,并对o1加了锁");
}
}
System.out.println("我运行完了,我要释放所有资源:o1和o2");
}
}
public class Main {
public static void main(String[] args) {
DeadLock1 deadLock1 = new DeadLock1();
DeadLock2 deadLock2 = new DeadLock2();
deadLock1.start();
deadLock2.start();
}
}