使用CountDownLatch模擬高併發場景

2021-10-01 19:11:10 字數 1010 閱讀 5543

通過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物件上的...