理解wait notify的好例子

 1 import java.util.concurrent.TimeUnit;
 2 
 3 
 4 public class Example2 {
 5 
 6     /**
 7      * @param args
 8      */
 9     public static void main(String[] args) {
10         // TODO Auto-generated method stub
11         final Object synObj = new Object();        
12         Thread t1 = new Thread(new Runnable() {
13             @Override
14             public void run() {
15                 synchronized(synObj) {
16                     System.out.println("1.T1获取synObj的对象监视器,开始执行同步块");
17                     try {
18                         TimeUnit.MINUTES.sleep(1);//休息一分钟,不放弃锁
19                         System.out.println("T1在 wait()时挂起了");
20                         synObj.wait();
21                         System.out.println("T1被T2唤醒后并重新获得synObj的对象监视器,继续执行");                        
22                     }catch(InterruptedException e) {
23                         e.printStackTrace();
24                     }
25                     System.out.println("T1获取synObj的对象监视器,结束同步块");
26                 }                
27             };
28         });
29         t1.start();
30 
31 
32         Thread t2 = new Thread(new Runnable() {
33             @Override
34             public void run() {
35                 System.out.println("T2启动,但是因为T1占用了synObj的对象监视器,则等待T1执行synObj.wait来释放它");
36                 synchronized(synObj) {
37                     try {
38                         System.out.println("在T1执行synObj.wait后,T2获取synObj的对象监视器,进入同步块");
39                         synObj.notify();
40                         System.out.println("T2执行synObj.notify(),T1被唤醒,但T2还在同步块中,没有释放synObj的对象监视器,T1等待synObj的对象监视器");
41                         TimeUnit.MINUTES.sleep(1);
42                         System.out.println("T2结束同步块,释放synObj的对象监视器,T1获取到synObj的对象监视器,并执行wait后面的操作");
43                     }catch(InterruptedException e) {
44                         e.printStackTrace();
45                     }
46                 }                
47             };
48         });
49         t2.start();
50         
51 
52     }
53 
54 }
原文地址:https://www.cnblogs.com/hansongjiang/p/3859133.html