CountDownLatch是什么,简单讲就是多线程的倒计时工具,等所有的线程都完成任务,再继续执行程序。其中有两个主要函数:
- countDown() 每个线程完成任务调用此函数,倒计时减1
- await() 等待所有线程都执行完成
举个例子,有一个10人的旅游团,导游需要统计10个人都到齐了在出发,代码如下:
import java.util.concurrent.CountDownLatch;
public class CountDownLatchDemo {
public static void main(String[] args) throws InterruptedException {
//设置总人数
CountDownLatch countDownLatch = new CountDownLatch(10);
for (int i = 0; i < 10; i++) {
new Thread(() -> {
System.out.println(Thread.currentThread().getName() + " 报到");
//到了就减1
countDownLatch.countDown();
}, "组员" + i).start();
}
// 等待所有人员到齐(阻塞状态)
countDownLatch.await();
System.out.println("OK,人齐了出发");
}
}