CountDownLatch定义源码
时间: 2023-08-10 17:58:22 浏览: 91
CountDownLatch是Java中的一个同步工具类,它可以用于控制多个线程之间的同步。CountDownLatch通过一个计数器来实现,计数器的初始值可以设置为任意正整数,每当一个线程完成了自己的任务后,计数器的值就会减1,当计数器的值变为0时,表示所有线程都已经完成了任务,等待在CountDownLatch上的线程就会被唤醒。
CountDownLatch的定义源码如下:
```java
public class CountDownLatch {
private int count;
public CountDownLatch(int count) {
if (count < 0) {
throw new IllegalArgumentException("count cannot be negative");
}
this.count = count;
}
public void await() throws InterruptedException {
synchronized (this) {
while (count > 0) {
wait();
}
}
}
public void countDown() {
synchronized (this) {
if (count > 0) {
count--;
if (count == 0) {
notifyAll();
}
}
}
}
}
```
在上述代码中,CountDownLatch类维护了一个私有变量count,用于记录当前计数器的值。构造方法CountDownLatch(int count)用于初始化计数器,并且要求count必须为非负数。await()方法用于等待计数器的值变为0,如果计数器的值大于0,则当前线程会进入等待状态。countDown()方法用于将计数器的值减1,并且在计数器的值为0时唤醒所有等待的线程。
使用CountDownLatch可以方便地实现一些多线程并发控制的场景,比如等待多个任务全部完成后再进行下一步操作。
阅读全文