同步鎖Lock

1、用於解決多線程安全問題的方式安全

  synchronized:隱式鎖多線程

    1)同步代碼塊  2)同步方法spa

  JDK1.5後線程

    3)同步鎖 Lockcode

    注意:是一個顯式鎖,須要經過lock()方法上鎖,必須經過unlock()方法進行釋放鎖。blog

 1 public class TestLock {  2     public static void main(String[] args) {  3         Ticket ticket = new Ticket();  4         new Thread(ticket, "1號窗口").start();  5         new Thread(ticket, "2號窗口").start();  6         new Thread(ticket, "3號窗口").start();  7  }  8 }  9 
10 class Ticket implements Runnable{ 11     private int tick = 100; 12     private Lock lock = new ReentrantLock(); 13     public void run() { 14         while(true){ 15             lock.lock(); //上鎖
16             try{ 17                 if(tick > 0){ 18                     try { 19                         Thread.sleep(200); 20                     } catch (InterruptedException e) { 21  } 22                     System.out.println(Thread.currentThread().getName() + " 完成售票,餘票爲:" + --tick); 23  } 24             }finally{ 25                 lock.unlock(); //釋放鎖
26  } 27  } 28  } 29 }
相關文章
相關標籤/搜索