Java 中的并发包指的是 java.util.concurrent(简称 JUC)包和其子包下的类和接口,它为 Java 的并发提供了各种功能支持,比如:
-
提供了线程池的创建类 ThreadPoolExecutor、Executors 等;
-
提供了各种锁,如 Lock、ReentrantLock 等;
-
提供了各种线程安全的数据结构,如 ConcurrentHashMap、LinkedBlockingQueue、DelayQueue 等;
-
提供了更加高级的线程同步结构,如 CountDownLatch、CyclicBarrier、Semaphore 等。
在前面的章节中我们已经详细地介绍了线程池的使用、线程安全的数据结构等,本文我们就重点学习一下 Java 并发包中更高级的线程同步类:CountDownLatch、CyclicBarrier、Semaphore 和 Phaser 等。
CountDownLatch 介绍和使用
CountDownLatch(闭锁)可以看作一个只能做减法的计数器,可以让一个或多个线程等待执行。
CountDownLatch 有两个重要的方法:
-
countDown():使计数器减 1;
-
awai