死锁

 1 /**
 2  * 一共有两个人和两份资源,
 3  * 一人手中有一份,
 4  *但是,tang想得到对方的资源后,才后放手自己的资源(给对方享用),
 5  *对方(dou)也是这样想的,两者都不让步,
 6  */
 7 public class DeadIockThread {
 8 
 9     /**
10      * 死锁
11      * @param args
12      */
13     public static void main(String[] args) {
14         Object zi = new Object();
15         Object yuan = new Object();
16         Thread t = new Thread(new tang(zi, yuan));
17         Thread t1 = new Thread(new dou(zi,yuan));
18     
19         System.out.println("aaaa");
20         t.start();
21         t1.start();
22     
23     }
24 }
25 class tang implements Runnable{
26     Object zi;
27     Object yuan;
28     public tang(Object zi, Object yuan) {
29         this.zi = zi;
30         this.yuan = yuan;
31     }
32     @Override
33     public void run() {
34         /*tang拥有“资”,但还想拥有“源”
35          * 拥有“源”后,才会分享“资”
36          */
37         synchronized(zi){
38             try {
39                 Thread.sleep(1000);
40             } catch (InterruptedException e) {
41                 // TODO Auto-generated catch block
42                 e.printStackTrace();
43             }
44             synchronized(yuan){
45                 System.out.println("还想拥有“源”");
46             }
47         }    
48     }
49 }
50 class dou implements Runnable{
51     Object zi;
52     Object yuan;
53     
54     public dou(Object zi, Object yuan) {
55         this.zi = zi;
56         this.yuan = yuan;
57     }
58     //同理
59     public void run() {
60         
61         synchronized(yuan){
62             
63             synchronized(zi){
64             System.out.println("还拥有“资”");    

 

posted @ 2018-10-09 17:54  卡多希  阅读(112)  评论(0)    收藏  举报