JAVA 死锁实例

public class Resource {
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();


}
}

你可能感兴趣的:(JAVA 死锁实例)