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