CountDownLatch

CountDownLatch(Count Down Latch,直译为倒计数门阀),它的作用就与其名字所表达的意思一样,是指有一个门阀在等待着倒计数,直到计数器为0的时候才能打开,当然我们设置在门阀等待打开的超时时间。
CountDownLatch是一个同步助手,允许一个或者多个线程等待一系列的其他线程执行结束。
方法:

方法
countdown() 对计数器进行递减
await() 是调用该方法的线程进入等待的状态
  1. public class CountDownLatchDemo1 {
  2. public static void main(String[] args) throws InterruptedException {
  3. CountDownLatch latch = new CountDownLatch(5);
  4. ExecutorService executorService = Executors.newFixedThreadPool(5);
  5. for (int i = 0; i < 5; i++) {
  6. final int no = i + 1;
  7. executorService.submit(()->{
  8. try {
  9. Thread.sleep((long) (Math.random() * 1000));
  10. System.out.println("No." + no + "完成了检查。");
  11. } catch (InterruptedException e) {
  12. e.printStackTrace();
  13. } finally {
  14. latch.countDown();
  15. }
  16. });
  17. }
  18. System.out.println("等待5个人检查完.....");
  19. latch.await();
  20. System.out.println("所有人都完成了工作,进入下一个环节。");
  21. }
  22. }

CyclicBarrier