CountDownLatch
是 Java 并发工具包 (java.util.concurrent
) 中提供的一个同步辅助类,用于协调多个线程之间的执行顺序。它允许一个或多个线程等待直到在其他线程中执行的一组操作完成。
基本工作原理
CountDownLatch
的工作原理非常简单:
- 初始化计数:在创建
CountDownLatch
对象时,你需要指定一个计数值(整数)。这个计数值表示需要等待完成的操作数量。 - 计数递减:每当一个操作完成时,调用
countDown()
方法将计数值减一。 - 等待计数完成:任何调用
await()
方法的线程将会阻塞,直到计数值变为零。一旦计数值变为零,所有等待的线程都会被释放,继续执行。
主要方法
CountDownLatch(int count)
:构造一个CountDownLatch
,给定一个初始的计数值。void countDown()
:递减计数器的值。如果递减后的值变为零,则释放所有等待的线程。boolean await(long timeout, TimeUnit unit)
:使当前线程等待,直到计数器为零,或者等待指定的时间量。void await()
:使当前线程等待,直到计数器为零。
使用示例
以下是