java 线程池 退出
时间: 2023-07-08 07:53:20 浏览: 85
关闭线程池
4星 · 用户满意度95%
Java线程池可以通过shutdown()和shutdownNow()方法来退出。
1. shutdown()方法:该方法不会立即停止线程池,而是会等待所有任务执行完毕后再停止。在调用该方法后,线程池不再接受新的任务,但会继续执行已经添加的任务。示例代码如下:
```
ExecutorService executorService = Executors.newFixedThreadPool(10);
// 执行任务...
executorService.shutdown();
```
2. shutdownNow()方法:该方法会立即停止线程池,该方法会尝试停止所有正在执行的任务,并返回等待执行的任务列表。示例代码如下:
```
ExecutorService executorService = Executors.newFixedThreadPool(10);
// 执行任务...
List<Runnable> waitingTasks = executorService.shutdownNow();
```
需要注意的是,在调用shutdown()或shutdownNow()方法之后,如果线程池中的任务还未执行完毕,可以通过awaitTermination()方法等待线程池的完全终止。示例代码如下:
```
ExecutorService executorService = Executors.newFixedThreadPool(10);
// 执行任务...
executorService.shutdown();
try {
if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {
executorService.shutdownNow();
}
} catch (InterruptedException e) {
executorService.shutdownNow();
Thread.currentThread().interrupt();
}
```
阅读全文