j ava countdownlatch
时间: 2023-04-27 18:00:07 浏览: 106
好的,下面是关于Java中CountDownLatch的回答:
Java中的CountDownLatch是一种多线程并发控制工具,它可以让一个或多个线程等待其他线程完成操作之后再执行。它的基本思想是让一个计数器count初始值为N,当一个线程完成了自己的任务后,count的值就减1,当count的值减为0时,所有等待该计数器的线程就会被唤醒,继续执行。
下面是CountDownLatch的使用方法:
1. 首先创建一个CountDownLatch对象,将计数器初始化为需要等待的线程数。
```java
CountDownLatch latch = new CountDownLatch(N);
```
2. 在需要等待的线程中,调用CountDownLatch的await()方法,让该线程等待其他线程完成操作。
```java
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
```
3. 在需要被等待的线程中,完成自己的操作后,调用CountDownLatch的countDown()方法,让计数器的值减1。
```java
latch.countDown();
```
4. 所有被等待的线程完成操作后,CountDownLatch中的计数器count的值减为0,所有等待该计数器的线程就会被唤醒,继续执行。
CountDownLatch的一个常见应用场景是在主线程中等待多个子线程完成任务后再继续执行。在这种场景下,主线程可以使用CountDownLatch来等待所有子线程完成任务,而每个子线程完成任务后都调用一次countDown()方法来减小计数器的值,当所有子线程都完成任务后,主线程就会被唤醒,继续执行后续操作。
阅读全文