一、CountDownLatch介紹
? ??????CountDownLatch是一個(gè)并發(fā)工具類,?作用是允許一個(gè)或多個(gè)線程等待其他線程完成操作。我們有時(shí)會(huì)稱之為發(fā)令槍。有一個(gè)個(gè)形象的例子能說明其功能:公司召開一個(gè)全體股東會(huì),需要所有股東到場(chǎng)了才能正式開始。會(huì)議室準(zhǔn)備了一個(gè)花名冊(cè),記錄了需要到會(huì)的總?cè)藬?shù),每一個(gè)股東來到會(huì)議室就要簽名確認(rèn),同時(shí)總?cè)藬?shù)減一,當(dāng)需要到會(huì)的總?cè)藬?shù)為0時(shí),會(huì)議就正式開始。所以,CountDownLatch就有充當(dāng)計(jì)數(shù)器和發(fā)令槍的功能。
二、模擬并發(fā)請(qǐng)求
? ? ? ? 通過CountDownLatch的計(jì)數(shù)和發(fā)令功能,我們可以通過它模擬并發(fā)請(qǐng)求的功能,常常能用于測(cè)試。下面的代碼時(shí)一個(gè)模擬并發(fā)請(qǐng)求的示例:

? ? 1、concurrentCount定義并發(fā)請(qǐng)求數(shù)量;
????2、countDownLatch.await()處會(huì)一直阻塞當(dāng)前進(jìn)程,計(jì)數(shù)器的值為0;
? ? 3、countDownLatch.countDown()每執(zhí)行一次,計(jì)數(shù)器數(shù)值減一,當(dāng)值為0時(shí),阻塞的線程會(huì)一起執(zhí)行。
? ? 上述例子希望能給大家?guī)硇⌒〉膯l(fā)。