线程池掉主线程的方法
时间: 2023-10-24 18:26:55 浏览: 40
在使用线程池时,主线程可以通过以下方法来等待线程池中的任务执行完成:
1. 使用`awaitTermination()`方法:在主线程中,可以调用线程池的`awaitTermination()`方法来等待线程池中的任务执行完成。这个方法会阻塞主线程,直到所有任务完成或超时。
```java
ExecutorService executor = Executors.newFixedThreadPool(5);
// 向线程池提交任务
executor.submit(task1);
executor.submit(task2);
// 关闭线程池
executor.shutdown();
try {
// 等待所有任务执行完成,或者超时时间达到
executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
// 处理中断异常
e.printStackTrace();
}
```
2. 使用`isTerminated()`方法:在主线程中,可以通过`isTerminated()`方法判断线程池中的任务是否已经执行完成。可以使用一个循环来检查任务的状态,直到所有任务执行完成。
```java
ExecutorService executor = Executors.newFixedThreadPool(5);
// 向线程池提交任务
executor.submit(task1);
executor.submit(task2);
// 关闭线程池
executor.shutdown();
while (!executor.isTerminated()) {
// 等待所有任务执行完成
}
```
这两种方法都可以实现主线程等待线程池中任务执行完成的效果。具体使用哪种方法取决于你的需求和代码逻辑。