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),将达到死锁的效果。