java線程同步之CountDownLatch

1、類說明
jdk的concurrent包中的CountDownLatch類是一個線程同步的輔助類,它使得線程可以一直等待在其它線程中執行的操作,直到此操作結束。CountDownLatch在初始化的時候指定一個大小值N,調用CountDownLatch的await方法的線程會陷入等待之中,直到這個CountDownLatch對象的countDown方法被調用N次爲止,無論是在一個線程中調用N次,還是在N個線程中被調用一次。只有這個對應的CountDownLatch對象的countDown方法總被調用次數爲N次之後,這個等待的線程才能繼續往下執行。

其原理也容易理解,初始化的時候指定要等待的計數的次數,每調用一次countDown就對這個計數減一,直到計數被減到0,等待的線程就可以繼續運行了。

2、await
CountDownLatch的await方法會使得當前線程進入等待狀態,直到最新的一次計數被減到0爲止。如果當前的計數已經是0了,那麼這個方法會馬上返回。這個函數有個代參的重載函數,可以設置一個最長的等待時長。在等待時長內,如果計數器被減到0,這個函數會返回true,或者達到等待時長,這個函數會返回false。(被中斷情況下拋異常)

3、countDown
使計數減一,初始化的計數不能重新設定,只能通過countDown來對計數減一

發佈了54 篇原創文章 · 獲贊 14 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章