两个线程相互访问对方的释放锁,导致锁死
package thread.deaklock;
public class A {
static class B{
public B(){
}
C c;
/**
* @param c
*/
public B(C c) {
this.c = c;
}
public synchronized void tosayB(C c){
System.out.println("B to say hello!");
c.tosayC(this);
}
}
static class C{
public C(){
}
public synchronized void tosayC(B b){
System.out.println("C to say hello!");
b.tosayB(this);
}
}
static class run implements Runnable{
C c;
B b;
/**
* @param c
* @param b
*/
public run(C c, B b) {
this.c = c;
this.b = b;
}
public void run() {
c.tosayC(b);
b.tosayB(c);
}
}
public static void main(String[] args) {
C c = new C();
B b = new B();
new Thread(new run(c, b)).start();
new Thread(new run(c, b)).start();
}
}