当需要等待多个任务完成时,可以调用多次join,也可以使用CountDownLatch.
使用方法:
构造CountDownLatch对象,构造函数中的数值为等待多少线程执行完成.
每个任务执⾏完毕,都调⽤latch.countDown(),CountDown Latch中计数器自减.
调用latch.await()进行等待,当计数器为0时等待完毕,继续执行.
public static void main(String[] args) throws InterruptedException {
CountDownLatch latch = new CountDownLatch(10);
Runnable r = new Runnable() {
public void run() {
//进行随机sleep表示未知的执行时间
Random random = new Random();
int n = random.nextInt(100) + 1;
try {
Thread.sleep(n * 100);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//执行完毕 计数器自减
latch.countDown();
}
};
for (int i = 0; i < 10; i++) {
Thread thread = new Thread(r);
thread.start();
}
latch.await();
System.out.println("所有线程执行完毕");
}

等待一段时间后,执行完毕.
利用CountDownLatch同步多线程任务
629

被折叠的 条评论
为什么被折叠?



