CountDownLatch 用法例子
时间: 2024-03-14 21:41:48 浏览: 75
CountDownLatch的使用
CountDownLatch是Java中的一个同步工具类,它可以用于控制线程的执行顺序。它的主要作用是让某个线程等待其他线程完成操作后再继续执行。
CountDownLatch的用法如下:
1. 创建一个CountDownLatch对象,并指定计数器的初始值。
2. 在需要等待的线程中调用CountDownLatch的await()方法,使线程进入等待状态。
3. 在其他线程完成操作后,调用CountDownLatch的countDown()方法,将计数器减1。
4. 当计数器减到0时,等待的线程将被唤醒,继续执行。
下面是一个使用CountDownLatch的例子:
```java
import java.util.concurrent.CountDownLatch;
public class Example {
public static void main(String[] args) throws InterruptedException {
int threadCount = 5;
CountDownLatch latch = new CountDownLatch(threadCount);
for (int i = 0; i < threadCount; i++) {
Thread thread = new Thread(new Worker(latch));
thread.start();
}
// 等待所有线程执行完毕
latch.await();
System.out.println("所有线程执行完毕");
}
static class Worker implements Runnable {
private CountDownLatch latch;
public Worker(CountDownLatch latch) {
this.latch = latch;
}
@Override
public void run() {
// 模拟线程执行任务
try {
Thread.sleep(1000);
System.out.println("线程执行完毕");
} catch (InterruptedException e) {
e.printStackTrace();
}
// 完成任务后调用countDown()方法
latch.countDown();
}
}
}
```
上述例子中,创建了5个线程,并且每个线程执行完任务后调用了countDown()方法。主线程调用await()方法等待所有线程执行完毕,当计数器减到0时,主线程被唤醒,输出"所有线程执行完毕"。
阅读全文