循壞柵欄CyclicBarrier

2022-07-09 09:12:10 字數 707 閱讀 7100

①一種多執行緒併發控制實用工具,和countdownlatch類似,它也可以實現執行緒間的計數等待,功能比countdownlatch複雜且強大

柵欄可想象為私人宅邸的柵欄,阻止閒雜人等入內。這裡當然是用來阻止繼續執行,要求執行緒在柵欄處等待

cyclic意為迴圈,也就是說這個計數器可以反覆使用

②另外cyclicbarrier可以接收乙個引數作為barrieraction,所謂barrieraction就是當計數器一次計數完成後,系統會執行的動作。如下建構函式,其中,parties表示計數總數,也就是參與的執行緒總數

public cyclicbarrier(int parties, runnable barrieaction)

③工作過程

④cyclicbarrier.await()方法可丟擲兩個異常,分別是interruptedexception,也就是等待過程中,執行緒被中斷,和brokenbarrierexception,這個異常代表當前的cyclicbarrier已經破損,可能系統已經沒法等待所有執行緒到齊了,繼續等待沒有意義。

幾種循壞的使用

而且我們都知道幾種迴圈語句可以相互轉化。對於do while 條件 它 是先執行然後再進行判斷 對於while 條件 先進行判斷然後再執行循壞體內的語句 for循壞 for 表示式1 表示式2 表示式3 這裡我們需要知道for中的執行順序 表示式1 表達2 語句 表示式三 其中這裡開始循壞知道條件為...

lua for循壞和迭代器

普通for迴圈 for var exp1,exp2,exp3 do 執行體 endvar 從 exp1 變化到 exp2,每次變化以 exp3 為步長遞增 var,並執行一次 執行體 exp3 是可選的,如果不指定,預設為1。函式for迴圈 function f x print function r...

循壞賽日程表(遞迴 遞推)

循壞賽日程表 設有 n 2 k 個運動員要進行網球迴圈賽。現要設計乙個滿足以下要求的比賽日程表。1 每個選手必須與其他n 1個選手各賽一場。2 每個選手一天只能參賽一次。3 迴圈賽在n 1天內結束。最後列印出的 的第一列表示每個隊伍,第i行第j列表示 第i 1個隊伍在第j天對抗的隊伍。遞迴分治 in...