15 迴圈柵欄CyclicBarrier

2021-10-05 20:13:23 字數 589 閱讀 2628

cyclicbarrier通常稱為迴圈屏障。它和countdownlatch很相似,都可以使執行緒先等待然後再執行。不過countdownlatch是使一批執行緒等待另一批執行緒執行完後再執行;而cyclicbarrier只是使等待的執行緒達到一定數目後再讓它們繼續執行,每呼叫一次await()方法都將使阻塞的執行緒數+1,只有阻塞的執行緒數達到設定值時屏障才會開啟,允許阻塞的所有執行緒繼續執行.

主管相當於 countdownlatch,幹活的小弟相當於做事情的執行緒。

老闆交給主管了乙個任務,讓主管搞完之後立即上報給老闆。主管下面有10個小弟,接到任務之後將任務劃分為10個小任務分給每個小弟去幹,主管一直處於等待狀態(主管會呼叫await()方法,此方法會阻塞當前執行緒),讓每個小弟幹完之後通知一下主管(呼叫countdown()方法通知主管,此方法會立即返回),主管等到所有的小弟都做完了,會被喚醒,從await()方法上甦醒,然後將結果反饋給老闆。期間主管會等待,會等待所有小弟將結果匯報給自己。

而cyclicbarrier是一批執行緒讓自己等待,等待所有的執行緒都準備好了,自己才能繼續

第17天:juc中的迴圈柵欄cyclicbarrier的6種使用場景

CyclicBarrier 迴圈柵欄

cyclicbarrier迴圈柵欄 迴圈屏障 是一種同步幫助,當多個執行緒一起執行任務是,乙個執行緒沒有完成任務,其他執行緒都必須進入等待狀態,等待這個執行緒完成任務後,才能再執行其他任務。強調相互等待,乙個執行緒不完成,其他執行緒全部等待。例如 乙個公司去團建,需要大家全部集合完畢後,才能出發,有...

(13)倒計時器和迴圈柵欄

允許乙個或多個執行緒等待直到在其他執行緒中執行的一組操作完成的同步輔助。乙個countdownlatch用給定的計數初始化。await 方法阻塞,直到由於countdown 方法的呼叫而導致當前計數達到零,之後所有等待執行緒被釋放,並且任何後續的await 呼叫立即返回。這是乙個一次性的現象 計數無...

JAVA SE基礎 15 迴圈巢狀

巢狀迴圈是指在乙個迴圈語句的迴圈體中再定義乙個迴圈語句結構,while,do while,for迴圈語句都可以進行巢狀,並且可以互相巢狀,下面來看下for迴圈中巢狀for迴圈的例子。如下 public class circulation system.out.print n 換行 外層迴圈用於控制列...