Hutool中等待子线程执行完毕,再执行主线程
时间: 2023-09-24 11:11:03 浏览: 197
在Hutool中,可以使用CountDownLatch(倒计时门闩)来实现等待子线程执行完毕再执行主线程的功能。
具体实现步骤如下:
1. 在主线程中创建CountDownLatch对象,并设置计数器的值为子线程的数量。
2. 在子线程中执行完相关任务后,调用CountDownLatch对象的countDown()方法,将计数器减1。
3. 在主线程中调用CountDownLatch对象的await()方法,等待计数器归零,即所有子线程执行完毕。
4. 主线程在等待子线程执行完毕后,即可继续执行其他任务。
示例代码如下:
```java
import java.util.concurrent.CountDownLatch;
public class Test {
public static void main(String[] args) throws InterruptedException {
int threadCount = 5; // 子线程数量
CountDownLatch countDownLatch = new CountDownLatch(threadCount);
for (int i = 0; i < threadCount; i++) {
new Thread(new Task(countDownLatch)).start();
}
countDownLatch.await(); // 等待子线程执行完毕
System.out.println("所有子线程执行完毕,主线程继续执行。");
}
static class Task implements Runnable {
private CountDownLatch countDownLatch;
public Task(CountDownLatch countDownLatch) {
this.countDownLatch = countDownLatch;
}
@Override
public void run() {
try {
// 子线程执行相关任务
Thread.sleep(1000);
System.out.println("子线程执行完毕。");
countDownLatch.countDown(); // 计数器减1
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
```
阅读全文