ThreadPoolExecutor关闭线程shutdownNow
时间: 2023-10-21 08:26:58 浏览: 103
你可以使用`ThreadPoolExecutor`的`shutdownNow()`方法来关闭线程池并尝试立即停止所有正在执行的任务。这个方法会尝试中断所有线程并返回一个包含尚未开始执行的任务的列表。
示例代码如下:
```java
// 创建一个线程池
ThreadPoolExecutor executor = new ThreadPoolExecutor(
corePoolSize, // 核心线程数
maximumPoolSize, // 最大线程数
keepAliveTime, // 线程空闲时间
TimeUnit.SECONDS, // 时间单位
new LinkedBlockingQueue<Runnable>() // 任务队列
);
// 执行一些任务
executor.execute(task1);
executor.execute(task2);
// 关闭线程池
List<Runnable> unfinishedTasks = executor.shutdownNow();
// 处理未完成的任务
for (Runnable task : unfinishedTasks) {
// 处理任务...
}
```
在调用`shutdownNow()`方法后,线程池将不再接受新的任务,并且会立即尝试停止正在执行的任务。你可以使用返回的`List<Runnable>`来获取尚未开始执行的任务列表,并根据需要进行处理。请注意,这个方法并不保证能够成功停止所有线程,因为某些任务可能无法被中断。
希望这个例子能帮到你!如果你还有其他问题,请随时提问。
阅读全文