CountDownLatch
CountDownLatch(Count Down Latch,直译为倒计数门阀),它的作用就与其名字所表达的意思一样,是指有一个门阀在等待着倒计数,直到计数器为0的时候才能打开,当然我们设置在门阀等待打开的超时时间。
CountDownLatch是一个同步助手,允许一个或者多个线程等待一系列的其他线程执行结束。
方法:
方法 | |
---|---|
countdown() | 对计数器进行递减 |
await() | 是调用该方法的线程进入等待的状态 |
public class CountDownLatchDemo1 {
public static void main(String[] args) throws InterruptedException {
CountDownLatch latch = new CountDownLatch(5);
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i = 0; i < 5; i++) {
final int no = i + 1;
executorService.submit(()->{
try {
Thread.sleep((long) (Math.random() * 1000));
System.out.println("No." + no + "完成了检查。");
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
latch.countDown();
}
});
}
System.out.println("等待5个人检查完.....");
latch.await();
System.out.println("所有人都完成了工作,进入下一个环节。");
}
}