ExecutorService对象的shutdown()和shutdownNow()的区别

简介:
可以关闭 ExecutorService,这将导致其拒绝新任务。提供两个方法来关闭 ExecutorService。shutdown() 方法在终止前允许执行以前提交的任务,而 shutdownNow() 方法阻止等待任务启动并试图停止当前正在执行的任务。在终止时,执行程序没有任务在执行,也没有任务在等待执行,并且无法提交新任务。应该关闭未使用的 ExecutorService 以允许回收其资源。 

下列方法分两个阶段关闭 ExecutorService。第一阶段调用 shutdown 拒绝传入任务,然后调用 shutdownNow(如有必要)取消所有遗留的任务: 

 void shutdownAndAwaitTermination(ExecutorService pool) {
   pool.shutdown(); // Disable new tasks from being submitted
   try {
     // Wait a while for existing tasks to terminate
     if (!pool.awaitTermination(60, TimeUnit.SECONDS)) {
       pool.shutdownNow(); // Cancel currently executing tasks
       // Wait a while for tasks to respond to being cancelled
       if (!pool.awaitTermination(60, TimeUnit.SECONDS))
           System.err.println("Pool did not terminate");
     }
   } catch (InterruptedException ie) {
     // (Re-)Cancel if current thread also interrupted
     pool.shutdownNow();
     // Preserve interrupt status
     Thread.currentThread().interrupt();
   }
 }


shutdown调用后,不可以再submit新的task,已经submit的将继续执行。

shutdownNow试图停止当前正执行的task,并返回尚未执行的task的list

相关文章
|
Java 关系型数据库 MySQL
springboot+vue外卖点餐系统(源码+文档)
基于SpringBoot的外卖点餐系统包括管理员、用户、商家和骑手四个角色的功能模块。系统采用Java开发,使用SpringBoot框架,JDK1.8,MySQL 5.7+数据库。管理员功能涉及用户、商家、菜品分类、骑手和系统管理等,用户可进行订单、配送单、商品评价和收藏管理。商家和骑手也有相应的订单、配送单和评价管理。此外,提供各类Java毕设项目,涵盖多种框架。项目源码及更多信息可联系风歌获取。
|
Java Go
java 继承关系的内存图解 (通俗易懂)
Java 继承关系中的内存图解,逐步拆分!
1139 0
java 继承关系的内存图解 (通俗易懂)
|
开发工具 git
关于github默认分支名改为main后可能的处理【git推送到远程不同的分支、github修改默认分支名】
git如何删除本地分支、删除远程分支,由分支的删除可以实现推送到远程不同的分支。 git不允许推送到远程与本地分支名不同的分支上。
1255 1
uniapp 添加自定义图标
uniapp 添加自定义图标
537 0
el-dialog中内容自定义滚动条
el-dialog中内容自定义滚动条
359 0
|
存储 Linux Shell
嵌入式 Linux 移植与系统启动方法
嵌入式 Linux 移植与系统启动方法
325 0
uni-app 图标按钮组件封装(4.2)
uni-app 图标按钮组件封装(4.2)
283 0
idea自动编译失效,每次修改代码都需要重新clean install
idea自动编译失效,每次修改代码都需要重新clean install
834 2
|
算法 C++ 容器
C++ std::remove/std::remove_if/erase用法探讨
std::remove 不会改变输入vector/string的长度。其过程相当于去除指定的字符,剩余字符往前靠。后面的和原始字符保持一致。
345 0
|
Java Maven
Maven配置文件修改
Maven的配置文件位于conf目录下的settings.xml文件 1、添加镜像下载地址 原因:解决默认仓库下载速度堪忧的问题(服务器在国外)