1、定義多線程
原文連接:http://www.studyshare.cn/blog-front//blog/details/1149/1併發
CountDownLatch是線程併發工具類,該類具備一個計數器,計數器具備一個初始化的值,當主線程調用latch.await()方法則進行阻塞,調用latch.countDown()方法時計數器值減一,一直等到計數器的值減爲0的時候,原來阻塞的方法繼續往下執行。代碼以下:高併發
一、定義兩個線程,線程一調用一次countDown(),線程二調用兩次countDown()工具
二、主線程代碼以下測試
三、運行結果線程
2、使用場景blog
一、使用CountDownLatch編寫高併發測試程序,可使用CountDownLatch初始化100或者更多線程,當全部線程初始化完畢後一塊兒去調用須要測試的業務模塊代碼,以此來模擬實際場景的高併發訪問,測試業務代碼對高併發的支持極限。隊列
二、某些系統啓動以前須要作不少初始化工做,只有當初始化工做線程中的全部代碼執行完畢後,才繼續執行主線程代碼,此時使用CountDownLatch來實現。get
3、實現原理同步
CountDownLatch是基於AQS(AbstractQueuedSynchronizer (抽象隊列同步器))實現的,關於AQS在另一篇文章有詳細講解,包括對源碼進行了深刻分析,請參考:http://www.studyshare.cn/blog-front//blog/details/1131/1
原創文章,轉載請註明來源,更多深度技術好文:http://www.studyshare.cn/blog-front//blog/index