CountDownLatch:具備計數器的功能,等待其餘線程執行完畢,主線程在繼續執行,用於監聽某些初始化操做,而且線程進行阻塞,等初始化執行完畢後,通知主線程繼續工做執行。值得注意的是CountDownLatch計數的次數必定要與構造器傳入的數字一致,好比構造器傳入的是3,則countDown()必定要執行3次,不然線程將一直阻塞。CountDownLatch一般用來控制線程等待,它可讓線程等待倒計時結束,再開始執行。
CyclicBrrier:翻譯過來就是循環柵欄的意思,其做用就是多線程的進行阻塞,等待某一個臨界值條件知足後,同時執行!假設有一個場景:每一個線程表明一個跑步運動員,當運動員都準備好後,才一塊兒出發,只要有一我的沒有準備好,你們都等待!多線程
CountDownLatch: 一個線程(或者多個), 等待另外N個線程完成某個事情以後才能執行。
CyclicBrrier: N個線程相互等待,任何一個線程完成以前,全部的線程都必須等待。 ide
coutDownLatch 底層實現了QAS,具體源碼後面再分析。源碼分析