【java】多线程同步死锁

 1 package 多线程;
 2 class A{
 3     public synchronized void say(B b){
 4         System.out.println("A说:你把你的本给我,我把我的笔给你!");
 5         b.get();
 6     }
 7     public synchronized void get(){
 8         System.out.println("A说:我得到了本,给你笔。");
 9     }
10 }
11 class B{
12     public synchronized void say(A a){
13         System.out.println("B说:你把你的笔给我,我把我的本给你!");
14         a.get();
15     }
16     public synchronized void get(){
17         System.out.println("B说:我行到了笔,给你本。");
18     }
19 }//以上任何一个synchronized去掉就可解除死锁
20 public class TestDeadLock implements Runnable{
21     private static A a=new A();
22     private static B b=new B();
23     public static void main(String[] args) {
24         new TestDeadLock();
25     }
26     public TestDeadLock(){
27         new Thread(this).start();
28         b.say(a);
29     }
30     @Override
31     public void run() {
32         a.say(b);
33     }
34 }
View Code
原文地址:https://www.cnblogs.com/xiongjiawei/p/6675196.html