countdownlatch是乙個同步工具類,它允許乙個或多個執行緒處於等待狀態直到在其它執行緒中執行的一組操作完成為止。countdownlatch用乙個給定的計數來實現初始化。await方法會一直處於阻塞狀態,直到countdown方法呼叫而使當前計數達到零。當計數為零之後,所有處於等待的執行緒將被釋放,await的任何後續呼叫將立即返回。這種現象只出現一次,計數是不能被重置的。
public class calculator extends thread
/*** 使用countdownlatch工具類來實現10個執行緒對1~100的求和,每個執行緒對10個數進行求和。
* 第乙個執行緒對1 – 10的數字求和
* 第二個執行緒對 11 – 20的數字求和
* 第三個執行緒對21 – 30 的數字求和
* …..
* 第十個執行緒對91 – 100的數字求和。
*/@override
public void run()
int sum = 0;
int start = (groupnumber - 1) * 10 + 1;
int end = groupnumber * 10;
for (int i = start; i <= end; i++)
this.result = sum;
system.out.println("執行緒"+thread.currentthread().getname()+":求和結果為:" + sum);
countdownlatch.countdown(); }
public static void main(string args)
try catch (interruptedexception e)
system.out.println("執行完成");
}}
執行結果:
執行緒thread-0:求和結果為:55
執行緒thread-1:求和結果為:155
執行緒thread-2:求和結果為:255
執行緒thread-3:求和結果為:355
執行緒thread-4:求和結果為:455
執行緒thread-6:求和結果為:655
執行緒thread-7:求和結果為:755
執行緒thread-8:求和結果為:855
執行緒thread-5:求和結果為:555
執行緒thread-9:求和結果為:955
執行完成
多執行緒 CountDownLatch
countdownlatch 允許乙個或多個執行緒等待其他執行緒完成操作。應用場景 假如有這樣乙個需求,當我們需要解析乙個excel裡多個sheet的資料時,可以考慮使用多執行緒,每個執行緒解析乙個sheet裡的資料,等到所有的sheet都解析完之後,程式需要提示解析完成。在這個需求中,要實現主線程...
執行緒同步 CountDownLatch
應用場景 有乙個任務想要往下執行,但必須要等到其他的任務執行完畢後才可以繼續往下執行。假如我們這個想要繼續往下執行的任務呼叫乙個countdownlatch物件的await 方法,其他的任務執行完自己的任務後呼叫同乙個countdownlatch物件上的countdown 方法,這個呼叫await ...
CountDownLatch 併發測試
countdownlatch,乙個同步輔助類,在完成一組正在其他執行緒中執行的操作之前,它允許乙個或多個執行緒一直等待。主要方法 public countdownlatch int count public voidcountdown public voidawait throws interrup...