关闭ExecutorService
时间: 2023-10-13 13:02:02 浏览: 142
要关闭 ExecutorService,您可以按照以下步骤进行操作:
1. 首先,调用 ExecutorService 的 `shutdown()` 方法。这会停止接受新任务,并允许已经提交的任务继续执行直到完成。
2. 然后,调用 `awaitTermination()` 方法,指定一个超时时间来等待所有任务完成。这个方法将阻塞当前线程,直到所有任务完成或超时。
3. 最后,如果超过了超时时间,您可以调用 `shutdownNow()` 方法来尝试强制停止所有正在执行的任务。
下面是一个示例代码:
```java
ExecutorService executorService = Executors.newFixedThreadPool(10);
// 执行一些任务
executorService.execute(task1);
executorService.execute(task2);
executorService.execute(task3);
// 关闭 ExecutorService
executorService.shutdown();
try {
// 等待所有任务完成,最多等待5秒钟
if (!executorService.awaitTermination(5, TimeUnit.SECONDS)) {
// 如果超过了等待时间,强制停止所有任务
executorService.shutdownNow();
}
} catch (InterruptedException e) {
// 捕获中断异常
executorService.shutdownNow();
}
```
请注意,`shutdown()` 方法只是停止接受新任务,并不会立即停止正在执行的任务。如果您希望立即停止所有任务,可以使用 `shutdownNow()` 方法。
阅读全文