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 }