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 }