public class A {
public synchronized void a(B b){
System.out.println("Enter A, a function");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
b.print();
}
public synchronized void print(){
System.out.println("print A");
}
}
public class B {
public synchronized void b(A a){
System.out.println("enter B, b function");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
a.print();
}
public synchronized void print(){
System.out.println("Print B");
}
}
public class Test implements Runnable{
A a = new A();
B b = new B();
public void run(){
b.b(a);
}
public void init(){
a.a(b);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t = new Test();
new Thread(t).start();
// try {
// Thread.sleep(1000);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
t.init();
}
}
如果在主线程main中加上Thread.sleep(1000),将达到死锁的效果。