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("还拥有“资”");