通過countdownlatch的簡單應用和實現原理這篇部落格,可以簡單的了解到countdownlatch的作用。
由此引申出使用countdownlatch模擬高併發場景的想法,作為乙個併發程式設計的計數器,我們是不是可以設想建立1000個執行緒,等所有的執行緒都建立完成後,countdownlatch初始值歸0,1000個執行緒就會執行接下來的邏輯,併發訪問介面
**樣例:
public
static
void
main
(string[
] args)
throws exception
catch
(interruptedexception e)
//業務邏輯,讓atomicinteger物件自增,可以想象成訪問乙個介面,修改某個表的字段值
atomicinteger.
incrementandget()
;//業務邏輯執行完,把主線程計數器減1
countdownlatchmain.
countdown()
;}})
;//執行緒建立成功,把執行緒計數器減1
countdownlatchthread.
countdown()
;}//主線程等待,只有等countdownlatchmain的初始值為0是才會繼續執行
countdownlatchmain.
await()
; system.out.
println
("1000個執行緒併發訪問atomicinteger物件,值為"
+ atomicinteger)
;//關閉執行緒池
executorservice.
shutdown()
;}
具體的邏輯已經清楚的寫在了注釋裡,執行結果如下:
java 多執行緒 CountDownLatch用法
countdownlatch,乙個同步輔助類,在完成一組正在其他執行緒中執行的操作之前,它允許乙個或多個執行緒一直等待。主要方法 public countdownlatch int count public void countdown public void await throws interr...
java多執行緒CountDownLatch用法
countdownlatch,乙個同步輔助類,在完成一組正在其他執行緒中執行的操作之前,它允許乙個或多個執行緒一直等待。主要方法 public countdownlatch int count public voidcountdown public voidawait throws interrup...
執行緒同步工具之CountDownLatch
countdownlatch的乙個非常典型的應用場景是 有乙個任務想要往下執行,但必須要等到其他的任務執行完畢後才可以繼續往下執行。假如我們這個想要繼續往下執行的任務呼叫乙個countdownlatch物件的await 方法,其他的任務執行完自己的任務後呼叫同乙個countdownlatch物件上的...