它容許兩個或者多個線程在某個點上進行同步。這個類與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