java-多线程3

Lock锁

 1 package test;
 2 
 3 public class Test01{
 4     public static void main(String[] args) {
 5         MyRunnable mr=new MyRunnable();
 6         Thread t1=new Thread(mr,"窗口1");
 7         Thread t2=new Thread(mr,"窗口2");
 8         Thread t3=new Thread(mr,"窗口3");
 9         
10         t1.start();
11         t2.start();
12         t3.start();
13     }
14 }
 1 package test;
 2 import java.util.concurrent.locks.Lock;
 3 import java.util.concurrent.locks.ReentrantLock;
 4 /*
 5  * 接口:Lock:  void lock()   ;   void  unlock()
 6  * Lock的实现类:ReentrantLock
 7  * */
 8 
 9 public class MyRunnable implements Runnable{
10     private int t=100;
11     private Lock lock=new ReentrantLock();
12     
13     @Override
14     public void run() {
15         // TODO Auto-generated method stub
16         while(true){
17             try{
18             //加锁
19             lock.lock();
20             if(t>0){
21                 try {
22                     Thread.sleep(100);
23                 } catch (InterruptedException e) {
24                     // TODO Auto-generated catch block
25                     e.printStackTrace();
26                 }
27                 System.out.println(Thread.currentThread().getName()+"正在出售第"+(t--)+"张票");
28             }
29             }finally{
30             //解锁
31             lock.unlock();
32             }
33         }
34     }
35 }

 

posted @ 2015-08-23 09:31  chengling  阅读(160)  评论(0编辑  收藏  举报