1. Semaphore同步器
特征:
- 經典的信號量,通過計數器控制對共享資源的訪問
- Semaphore(int count):創建擁有count個許可證的信號量
- acquire()/acquire(int num) : 獲取1/num個許可證 - release/release(int num) : 釋放1/num個許可證
2. CountDownLatch同步器
特征:
- 必須發生指定數量的事件后才可以繼續運行(比如賽跑比賽,裁判喊出3,2,1之后大家才同時跑)
- CountDownLatch(int count):必須發生count個數量才可以打開鎖存器
- await:等待鎖存器 - countDown:觸發事件
3. CyclicBarrier同步器
特征:
- 適用于只有多個線程都到達預定點時才可以繼續執行(比如斗地主,需要等齊三個人才開始)
- CyclicBarrier(int num) :等待線程的數量
- CyclicBarrier(int num, Runnable action) :等待線程的數量以及所有線程到達后的操作
- await() : 到達臨界點后暫停線程
4. 交換器(Exchanger)同步器
5. Phaser同步器