countdownlatch是乙個同步工具類,用來協調多個執行緒之間的同步,或者說起到執行緒之間的通訊(而不是用作互斥的作用)。
countdownlatch能夠使乙個執行緒在等待另外一些執行緒完成各自工作之後,再繼續執行。使用乙個計數器進行實現。計數器初始值為執行緒的數量。當每乙個執行緒完成自己任務後,計數器的值就會減一。當計數器的值為0時,表示所有的執行緒都已經完成了任務,然後在countdownlatch上等待的執行緒就可以恢復執行任務。
countdownlatch典型用法1:某一線程在開始執行前等待n個執行緒執行完畢。將countdownlatch的計數器初始化為nnew countdownlatch(n)
,每當乙個任務執行緒執行完畢,就將計數器減1countdownlatch.countdown()
,當計數器的值變為0時,在countdownlatch上await()
的執行緒就會被喚醒。乙個典型應用場景就是啟動乙個服務時,主線程需要等待多個元件載入完畢,之後再繼續執行。
countdownlatch典型用法2:實現多個執行緒開始執行任務的最大並行性。注意是並行性,不是併發,強調的是多個執行緒在某一時刻同時開始執行。類似於賽跑,將多個執行緒放到起點,等待發令槍響,然後同時開跑。做法是初始化乙個共享的countdownlatch(1),將其計數器初始化為1,多個執行緒在開始執行任務前首先coundownlatch.await()
,當主線程呼叫countdown()
時,計數器變為0,多個執行緒同時被喚醒。
countdownlatch是一次性的,計數器的值只能在構造方法中初始化一次,之後沒有任何機制再次對其設定值,當countdownlatch使用完畢後,它不能再次被使用。
CountDownLatch 的簡單理解
countdownlatch是乙個同步工具類,用來協調多個執行緒之間的同步,或者說起到執行緒之間的通訊 而不是用作互斥的作用 countdownlatch能夠使乙個執行緒在等待另外一些執行緒完成各自工作之後,再繼續執行。使用乙個計數器進行實現。計數器初始值為執行緒的數量。當每乙個執行緒完成自己任務後...
CountDownLatch類的分析
countdownlatch 實現 乙個或多個執行緒 等待 其他一組執行緒的操作執行完成。1 內部類 sync extends abstractqueuedsynchronizer 繼承了aqs,並實現了tryacquireshared,tryreleaseshared方法,同時擁有構造方法 syn...
類CountDownLatch的使用
允許乙個或多個執行緒等待,直到在其他執行緒中執行的一組操作完成為止。乙個countdownlatch初始化為給定數。該await方法將阻塞,直到由於該countdown 方法的呼叫導致當前計數達到零為止,此後所有等待執行緒都被釋放,並且隨後的任何awaitreturn 呼叫都將立即釋放 這是一種一次...