java併發和高併發——J.U.C之AQS-CountDownLatch

一、

1、簡要介紹該類的使用原理圖:

CountDownLatch是一個同步輔助類,利用它可以完成類似於阻塞當前線程的功能。換句話說,就是一個或者幾個線程一直等待,直到其它的線程運行完成。CountDown用了一個給定的計數器進行初始化,該計數器的操作是原子性的操作。同一個時刻只能有一個線程去操作該計數器。調用該類的await() 方法的線程會一直處於阻塞狀態,直到其他線程通過調用countDown操作,每次將計數器的值減去1,直到改爲0,該線程纔會停止阻塞狀態繼續運行。但是該類只能設置計數器的值一次,對於需要反覆設置計數器的值的場景不適用,需要考慮其他類。

2、countDownLatch的使用場景介紹:

如果在程序中執行,需要等待其他線程執行完成,才能進行後續操作的場景。典型應用,比如並行計算,當某個處理的運算量很大時,可以將運算拆分,並行運算。當每個子任務執行完畢後,將子任務的結果進行彙總。

註釋之前的模擬併發的示例:

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章