public class ThreadDemo9 {
/**
* @param args
*/
public static void main(String[] args) {
O1 o1 = new O1();
O2 o2 = new O2();
A5 a1 = new A5(o1, o2);
B5 b1 = new B5(o1, o2);
a1.start();
b1.start();
}
}
class O1 {
String o1;
}
class O2 {
String o2;
}
class A5 extends Thread {
private O1 o1;
private O2 o2;
A5(O1 o1, O2 o2) {
this.o1 = o1;
this.o2 = o2;
}
public void run() {
synchronized (o1) {
synchronized (o2) {
}
}
}
}
class B5 extends Thread {
private O1 o1;
private O2 o2;
B5(O1 o1, O2 o2) {
this.o1 = o1;
this.o2 = o2;
}
public void run() {
synchronized (o1) {
synchronized (o2) {
}
}
}
}
造成死锁原理可以这样理解吗?
同步嵌套
可以比喻成这样吗?张三需要打电话,但他手里只有手机卡,没电话,李四也想打电话,但是他手里有电话没电话卡,两个人都占着资源不放,这样就造成了死锁。请问对吗?
|
|