CyclicBarrier介紹:
位於java.util.concurrent併發包下,是一個工具類。CyclicBarrier是循環柵欄的意思,它能阻塞一組線程直到某個事件發生。等到釋放這些線程之後,CyclicBarrier還可以重複用,所以是循環柵欄
比如我們一起包了車去遊玩,有些人早早到了有些人準時到,有些人遲到。但是無論怎樣都要等所有人都齊了,車才能開,這個車就是CyclicBarrier。而參與的這些人就是線程
應用場景:多線程分組計算
提供的方法:
構造方法:
paties:參與線程數
brrierAction:即最後一個到達線程要做什麼操作
await方法:
public int await() throws InterruptedException, BrokenBarrierException
public int await(long timeout, TimeUnit unit) throws InterruptedException, BrokenBarrierException, TimeoutException
await()被調用的時候說明線程已經達到了柵欄。
CyclicBarrier和CountDownLatch區別;
CyclicBarrier是可以重複利用的, CountDownLatch是一次性的。