CountDownLatch await() 是起什么作用的
时间: 2023-11-22 09:48:49 浏览: 166
CountDownLatch是Java中的一个同步工具类,它可以让一个或多个线程等待其他线程完成操作后再执行。其中await()方法就是用来阻塞当前线程,直到CountDownLatch中的计数器减为0才会继续执行。
具体来说,CountDownLatch中的计数器初始值为一个正整数,每当一个线程完成了自己的任务后,就会调用CountDownLatch的countDown()方法将计数器减1。而在另一个或多个线程中,调用await()方法的线程会被阻塞,直到计数器减为0才会继续执行。
举个例子,假设有一个任务需要等待两个子任务完成后才能执行,那么可以使用CountDownLatch来实现。首先创建一个CountDownLatch对象,计数器初始值为2,然后将这个对象传递给两个子任务。每个子任务完成后,都会调用countDown()方法将计数器减1。最后在主任务中调用await()方法,主任务会被阻塞,直到两个子任务都完成后计数器减为0才会继续执行。
下面是一个简单的示例代码:
```java
import java.util.concurrent.CountDownLatch;
public class CountDownLatchDemo {
public static void main(String[] args) throws InterruptedException {
CountDownLatch latch = new CountDownLatch(2);
new Thread(() -> {
// 子任务1
System.out.println("子线程1执行完毕");
latch.countDown();
}).start();
new Thread(() -> {
// 子任务2
System.out.println("子线程2执行完毕");
latch.countDown();
}).start();
latch.await();
// 主任务
System.out.println("所有子线程执行完毕");
}
}
```
阅读全文