最简单的java死锁例子

时间:2021-02-19 20:52:22
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),将达到死锁的效果。