如何判断线程池所有任务执行完
时间: 2023-07-17 07:07:20 浏览: 96
要判断线程池中的所有任务是否执行完毕,可以使用以下方法:
1. 使用`awaitTermination()`方法:调用线程池的`awaitTermination()`方法,并传入一个超时时间参数。该方法会阻塞当前线程,直到所有任务完成或超时。如果返回值为`true`,表示所有任务执行完毕;如果返回值为`false`,表示超时时间内还有任务未完成。
```java
ExecutorService executor = Executors.newFixedThreadPool(5);
// 执行任务...
executor.shutdown();
try {
if (!executor.awaitTermination(60, TimeUnit.SECONDS)) {
// 超时处理
}
} catch (InterruptedException e) {
// 异常处理
}
```
2. 使用`isTerminated()`方法:调用线程池的`isTerminated()`方法,该方法会立即返回一个布尔值。如果返回值为`true`,表示所有任务执行完毕;如果返回值为`false`,表示仍有任务在执行或等待执行。
```java
ExecutorService executor = Executors.newFixedThreadPool(5);
// 执行任务...
executor.shutdown();
while (!executor.isTerminated()) {
// 等待所有任务执行完毕
}
// 所有任务执行完毕后的处理
```
这些方法可以帮助你判断线程池中的任务是否全部执行完毕,从而进行相应的处理。
阅读全文