前言
countdownlatch 允許乙個或多個執行緒等待其他執行緒完成操作。
應用場景
假如有乙個列表的大量資料等待處理,最後全部處理完畢後返回處理結果。普通做法就是從頭遍歷,乙個個順序執行,這樣單執行緒處理效率不高,我們希望使用多執行緒的方式處理,同時在主線程等待所有子執行緒處理完成。
countdownlatch的建構函式接收乙個int型別的引數作為計數器,如果你想等待n個點完成,這裡就傳入n。
當我們呼叫一次countdownlatch的countdown方法時,n就會減1,countdownlatch的await會阻塞當前執行緒,直到n變成零。由於countdown方法可以用在任何地方,所以這裡說的n個點,可以是n個執行緒,也可以是1個執行緒裡的n個執行步驟。用在多個執行緒時,你只需要把這個countdownlatch的引用傳遞到執行緒裡。
示例**
public static void main(string args)
//執行緒最後執行countdown
countdownlatch.countdown();
});}
trycatch(exception e)
system.out.println(count.tostring());
}
最後的執行結果就是10*10000=100000,可見所有執行緒都處理完了。
擴充套件 countdownlatch的await方法還支援超時時間的設定,當等待超時時間子執行緒還沒執行完將不再等待繼續執行主線程。
public boolean await(long timeout, timeunit unit)
1熟練使用多執行緒處理,可以再處理大量重複性工作時發揮多執行緒處理的效率優勢。
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物件上的...