Java 演示线程的死锁问题

 1 package bytezero.deadlock;
 2 
 3 /**
 4  * 演示线程的死锁问题:
 5  *
 6  * 1.死锁的理解:不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃
 7  * 自己需要的同步资源,就形成了线程的死锁
 8  *
 9  * 2.说明:出现死锁后,不会出现异常,不会出现提示,只是所有的线程的都处于阻塞的状态,
10  * 无法继续
11  *       我们使用同步时,要避免出现死锁。
12  *
13  *  解决方法:
14  *  专门的算法,原则
15  *  尽量减少同步资源的定义
16  *  尽量避免嵌套的同步
17  *
18  *
19  * @author Bytezero1·zhenglei!    Email:420498246@qq.com
20  * create  2021-10-18 10:39
21  */
22 public class ThreadTest {
23     public static void main(String[] args) {
24 
25         StringBuffer s1 = new StringBuffer();
26         StringBuffer s2 = new StringBuffer();
27 
28         new Thread(){
29             @Override
30             public void run() {
31                 synchronized (s1){
32 
33                     s1.append("a");
34                     s2.append("1");
35 
36                     try {
37                         Thread.sleep(100);
38                     } catch (InterruptedException e) {
39                         e.printStackTrace();
40                     }
41 
42                     synchronized(s2){
43                         s1.append("b");
44                         s2.append("2");
45 
46                         System.out.println(s1);
47                         System.out.println(s2);
48                     }
49                 }
50             }
51         }.start();
52 
53         new Thread(new Runnable() {
54             @Override
55             public void run() {
56                 synchronized (s2){
57                     s1.append("c");
58                     s2.append("3");
59 
60                     try {
61                         Thread.sleep(100);
62                     } catch (InterruptedException e) {
63                         e.printStackTrace();
64                     }
65 
66                     synchronized(s1){
67                         s1.append("d");
68                         s2.append("4");
69 
70                         System.out.println(s1);
71                         System.out.println(s2);
72                     }
73                 }
74             }
75         }).start();
76     }
77 }

 

posted on 2021-10-18 11:02  Bytezero!  阅读(30)  评论(0编辑  收藏  举报