在集合點的同步 CyclicBarrier

它容許兩個或者多個線程在某個點上進行同步。這個類與CountDownLatch相似但也有不一樣,使之成爲更加大的類java

1.它使用一個整數進行初始化,這個數是須要在某個點上同步的線程數。當一個線程到達
指定的點後,它將調用await()等待其餘線程。當線程調用await()方法後,
CyslicBarrier類將阻塞這個線程並使之休眠直到全部其餘線程到達。當最後一個
線程調用CyslicBarrier類的await()時,CyslicBarrier對象將喚醒全部在等待的線程,
而後這些線程將繼續執行。
編程

2.CyslicBarrier它能夠 傳入另外一個Runbale對象做爲初始化參數。當全部線程
都到達集合點後,CyslicBarrier類將這個Runable對象做爲線程執行。
併發

3.CyslicBarrier.getNumberWaiting() 返回在await()上阻塞的線程數目,
4.CyslicBarrier.getParties()  返回被CyslicBarrier 對象同步的任務數。
線程

5.重置 CyslicBarrierrest

rest()方法提供重置,當重置發生後,在await()方法中等待的純種將收到一個
BrokenBarrierException異常。對象

6.損壞CyslicBarrierget

CyslicBarrier 對象有一種特殊的狀態即損壞狀態(Broken)。當線程在await()
方法上等待的時候,若是其中一個線程被中斷,這個線程將拋出InterruptedException
異常,其餘的等待線程將拋出BrokenBarrierException異常,因而CyslicBarrier對象
就處於損壞狀態了。
CyslicBarrier.isBroken()方法能夠 判斷,ture爲損壞同步

 

《摘自-java7併發編程實戰》it

相關文章
相關標籤/搜索