新闻中心

j*a中关闭ExecutorService

2025-12-07
浏览次数:
返回列表
关闭ExecutorService的核心是先拒绝新任务、再尽量完成已有任务、最后释放资源;应根据任务重要性与阻塞性选择shutdown()(温和等待)或shutdownNow()(立即中断),并配合awaitTermination()与异常处理确保正确终止。

java中关闭executorservice

关闭 ExecutorService 的核心是**先拒绝新任务,再尽量完成已有任务,最后释放资源**。直接调用 shutdown()shutdownNow() 是标准做法,但具体选哪个、后续是否等待,得看业务需求。

shutdown():温和关闭,等任务自然结束

调用 shutdown() 后,线程池不再接受新提交的任务(后续 submit()execute() 会抛 RejectedExecutionException),但会继续执行已加入队列的和正在运行的任务。

  • 适合任务重要、不能丢弃、且能预估执行时长的场景
  • 通常配合 awaitTermination() 使用,主动等待结束
  • 示例:
executor.shutdown();
try {
    if (!executor.awaitTermination(10, TimeUnit.SECONDS)) {
        executor.shutdownNow(); // 超时后强制中断
    }
} catch (InterruptedException e) {
    executor.shutdownNow();
    Thread.currentThread().interrupt();
}

shutdownNow():立即中断,尽力停止所有任务

尝试中断所有正在执行的任务,并返回尚未执行的任务列表(从任务队列中“拔出来”)。注意:中断只是建议,能否真正停止取决于任务自身是否响应中断(比如是否检查 Thread.interrupted() 或使用可中断的阻塞方法)。

NT80 购物系统 NT80 购物系统

功能说明:1 会员可申请开店功能2 购买在线扣除金额3 冲值卡自动生成4 支持2级分类5 数据库压缩和备份6 会员分5个级别7 商品带讨论8 自带融合论坛,可关闭打开9 密码找回功能10 新闻``滚动新闻``帮助中心11 后台设置前台会员的上传权限12 可关闭/打开商店13 会员自助发布商品功能14 用户问题咨询管理

NT80 购物系统 0 查看详情 NT80 购物系统
  • 适合任务可随时终止、或存在长时间阻塞风险(如网络等待)的场景
  • 不会等待队列中任务执行,也不保证正在运行的任务一定停止
  • 调用后仍建议检查返回的任务列表,按需处理

别忘了异常处理和线程中断传播

awaitTermination() 等待过程中可能被其他线程中断,此时应恢复中断状态并做清理。

  • 捕获 InterruptedException 后,一般要调用 Thread.currentThread().interrupt()
  • 如果主线程被中断,又没做任何处理,可能导致关机逻辑被静默跳过
  • 不要只写空的 catch (InterruptedException e) {}

常见误区提醒

  • 不调用 shutdown() / shutdownNow() 就直接让 ExecutorService 被 GC? —— 危险!线程池中的工作线程默认是 non-daemon,JVM 不会退出,程序可能一直挂着
  • 只调用 shutdown() 就不管了? —— 如果任务卡住(比如死循环、无限 sleep),线程池永远不终止
  • 反复调用 shutdown()? —— 安全,多次调用无副作用;但 shutdownNow() 多次调用也无额外效果

基本上就这些。关键不是“怎么关”,而是“什么时候关、关到什么程度”。根据任务性质决定策略,再配合适当的等待和兜底处理。

以上就是j*a中关闭ExecutorService的详细内容,更多请关注其它相关文章!


# 什么时候  # 高州seo排名  # 河北网站建设app  # 在线整合营销推广方式  # 建好网站后如何推广  # 花瓣网+seo  # 贷款网站怎么推广  # 网站首页seo分析优化建议  # 有销量主关键词没有排名  # 什么方式推广网站最快  # 江门seo网站推广公司  # java  # 就不  # 也不  # 正在运行  # 新任务  # 转换为  # 已有  # 好了  # 时长  # 购物系统  # ai 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: QQ邮箱正确登录入口_QQ邮箱官方网站使用地址  Yandex浏览器官方网页版入口 Yandex浏览器最新版官网  J*aScript类型检查_j*ascript代码规范  win11 arm版怎么安装 M1/M2 Mac虚拟机安装ARM win11的方法  铁路12306的积分有效期是多久_铁路12306积分有效期说明  qq游戏免费畅玩入口_qq游戏电脑版快速启动  学习通网页版官方登录 超星学习通电脑端入口指南  Archive of Our Own官网直达 AO3最新可用地址一览  怎么在浏览器上运行HTML文件_浏览器运行HTML文件技巧【技巧】  Win11怎么合并任务栏图标 Win11开启任务栏合并减少图标占空间【方法】  邮政快递单号查询入口 邮政快递物流信息在线查询入口  必由学官方网站入口 必由学学生教师共用登录通道  VS Code远程开发时如何处理文件权限问题  Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性  J*a递归快速排序中静态变量导致数据累积问题的解决方案  EMS快递官网app_中国邮政速递物流手机客户端  在J*a中如何使用Stream.map转换元素_Stream映射操作解析  可靠CSGO开箱平台解析 CSGO开箱网合集  uc浏览器网页版极速入口 uc网页浏览器网页版流畅体验  在命令行怎么运行html项目_命令行运行html项目方法【教程】  Excel文件在线转换快速入口 Excel在线格式转换网站  深入理解J*a编译器的兼容性选项:从-source到--release  Safari自带网页翻译功能怎么用 无需插件轻松看懂外文网站【方法】  如何在CSS中使用浮动制作导航栏_float实现水平菜单  J*a中实现Go语言select通道多路复用机制  如何使用Node.js csv 包按条件移除含空字段的CSV记录  使用J*aScript检测输入元素是否包含在特定类中  CSS条件样式无法按设备触发怎么排查_media条件语句正确设置解决触发问题  J*aScript map 迭代中检测空数组元素的有效方法  J*aScript中针对特定容器内图片动画的实现教程  html怎么在cmd下运行php文件_cmd运行html中php文件方法【教程】  豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售  58动漫网在线官方网 58动漫网正版动漫入口网址  163邮箱网页版入口导航平台 163邮箱网页版登录入口官网导航  css卡片内容溢出如何处理_使用overflow隐藏或scroll显示内容  React中useState与局部变量:理解组件状态管理与渲染机制  steam官方入口大全 steam账号注册及操作指南  Win11截图该按哪些键 Win11截屏完整流程解析【教程】  格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施  天眼查企业查询官网入口 天眼查官方网页版查询  想当下一个《2077》?《心之眼》Steam评价升至"多半好评"  ArrayList与LinkedList核心操作的Big-O复杂度分析  html网页设计源代码怎么运行_运行html网页设计源代码步骤【指南】  QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网  Composer的 archive 命令怎么用_快速打包你的PHP项目及其Composer依赖  AO3最新入口2025公告_AO3中文官网合集  Lar*el头像管理:图片缩放与旧文件删除的最佳实践  Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧  2026年CSGO开箱网站推荐 CSGO开箱平台精选  如何高效处理PHP中的Excel数据导入导出?PortPHP/Spreadsheet助你轻松搞定! 

搜索