讓一組執行緒達到某個屏障,被阻塞,一直到組內最後乙個執行緒達到屏障時,屏障開放,所有被阻塞的執行緒會繼續執行cyclicbarrier(int parties)
cyclicbarrier( int parties ),預設屏障開放時所有執行緒同時執行;
cyclicbarrier( int parties, runnable barrieraction ),屏障開放,barrieraction定義的任務會執行,執行完成後之前的執行緒就會接著執行
countdownlatch放行由第三者控制,cyclicbarrier放行由一組執行緒本身控制
countdownlatch放行條件》=執行緒數,cyclicbarrier放行條件=執行緒數
public
class
usecyclicbarrier
}//負責屏障開放以後的工作,等待其他執行緒執行完
private
static
class
collectthread
implements
runnable
system.out.
println
(" the result = "
+ result)
; system.out.
println
("do other business........");
}}//工作執行緒
private
static
class
subthread
implements
runnable
system.out.
println
(id+
"....is await");
barrier.
await()
; thread.
sleep
(1000
+id)
; system.out.
println
("thread_"
+id+
" ....do its business ");
}catch
(exception e)}}
}
Java 柵欄 CyclicBarrier 介紹
1 類說明 乙個同步輔助類,它允許一組執行緒互相等待,直到到達某個公共屏障點 common barrier point 在涉及一組固定大小的執行緒的程式中,這些執行緒必須不時地互相等待,此時 cyclicbarrier 很有用。因為該 barrier 在釋放等待執行緒後可以重用,所以稱它為迴圈 的 ...
CyclicBarrier的簡單使用
countdownlatch雖然好用,但是也有不足,就是它的計數器不能迴圈使用,是屬於一次性的消費品,對此cyclicbarrier倒是彌補了它這個不足,大部分情況下cyclicbarrier是對countdownlatch的補充,但是兩者還是有一點小小的區別 假如公司團建,大家一起做大巴車,在大巴...
CyclicBarrier實現原理
cyclicbarrier是乙個同步輔助類,它允許一組執行緒互相等待,直到所有執行緒都到達某個公共屏障點 也可以叫同步點 即相互等待的執行緒都完成呼叫await方法,所有被屏障攔截的執行緒才會繼續執行await方法後面的程式。在涉及一組固定大小的執行緒的程式中,這些執行緒必須不時地互相等待,此時cy...