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來對計數減一