java如何关闭线程池的线程
时间: 2023-10-18 21:08:55 浏览: 35
在Java中,可以通过以下步骤关闭线程池的线程:
1. 调用线程池对象的shutdown()方法来关闭线程池。
2. 调用线程池对象的awaitTermination()方法等待线程池中的所有任务执行完成。
3. 调用线程池对象的shutdownNow()方法来终止所有未执行的任务。
示例代码:
```java
ExecutorService executorService = Executors.newFixedThreadPool(5); // 创建一个线程池
// ...
// 关闭线程池
executorService.shutdown(); // 关闭线程池
try {
if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) { // 等待所有任务执行完成
executorService.shutdownNow(); // 终止所有未执行的任务
if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) { // 等待所有任务终止
System.err.println("线程池未正常关闭");
}
}
} catch (InterruptedException e) {
executorService.shutdownNow(); // 终止所有未执行的任务
Thread.currentThread().interrupt();
}
```