在我的代码中,我使用CompletionService和ExecutorService来启动一堆Thread来执行某些任务(这可能需要很长时间) . 所以我有一个创建ExecutorService和CompletionService的方法,然后开始提交线程然后获取结果 . 我想添加一个关闭钩子,以便优雅地关闭执行程序(我知道可能我应该处理释放资源而不是 Actuator 关闭但在我的情况下每个线程都有自己的资源,所以优雅地关闭它们可以是一个很好的解决方案我假设) .

因此我编写以下代码

public Class myClass{

...

private CompletionService completion;

final long SHUTDOWN_TIME = TimeUnit.SECONDS.toSeconds(10);

...

public Message executeCommand(Message request){

final ExecutorService executor = Executors.newFixedThreadPool(30);

completion = new ExecutorCompletionService(executor);

....//submit and take results

Runtime.getRuntime().addShutdownHook(new Thread(){

@Override

public void run() {

logger.debug("Shutting down executor");

try {

if (!executor.awaitTermination(SHUTDOWN_TIME, TimeUnit.SECONDS)) {

logger.debug("Executor still not terminate after waiting time...");

List notExecuted= executor.shutdownNow();

logger.debug("List of dropped task has size " + droppedTasks.size());

}

}catch(InterruptedException e){

logger.error("",e);

}

}

});

}

}

您认为这是一个合理的解决方案,还是使用本地类注册和取消注册关闭钩子是不安全的?

提前致谢

问候

java 自定义 钩子_Java添加关闭钩子里面的方法相关推荐

  1. nodemanager不能正常关闭_Java虚拟机关闭钩子(Shutdown hook)

    作者:俩右 出处:https://segmentfault.com/a/1190000038298447 源码点击 study:https://github.com/xiaoshuanglee/stu ...

  2. layui.open 关闭之后触发_JAVA虚拟机关闭钩子(Shutdown Hook)

    前言 当你认真的去看一个组件的源码的时候,你会经常看见这种关闭钩子的函数,如果你不了解的话,谷歌一下,你就会发现如下文章就是搜索引擎出来的第一篇,不愧是出自我们优秀的厮哒哒之笔. 正文 Java 程序 ...

  3. java 自定义运算符_Java中集合的自定义运算符

    java 自定义运算符 总览 操作员重载有多种语言可用. Java对String类型的+运算符的支持对运算符的重载非常有限. 我们可以利用其他语言支持运算符的不同方式,但是我们可以在Java中实现一个 ...

  4. java 自定义标签_Java自定义标签用法实例分析

    本文实例讲述了Java自定义标签用法.分享给大家供大家参考,具体如下: 简单例子 实现一个标签分为两步:(1)继承SimpleTagSupport或TagSupport实现一个控制器(2)创建一个描述 ...

  5. java自定义序列化_Java中的自定义国际化(i18n)

    java自定义序列化 国际化(i18n)在我们的软件项目中非常重要. 它主要带来以下好处: 将UI字符串外部化为代码文件以外的外部文件,以及易于管理的UI内容. 支持多种语言. 在这篇文章中,将为Ec ...

  6. java word 水印_Java 添加Word文本水印、图片水印

    水印是一种常用于各种文档的声明.防伪手段,一般可设置文字水印或者加载图片作为水印.以下内容将分享通过Java编程给Word文档添加水印效果的方法,即 文本水印图片水印使用工具:Free Spire.D ...

  7. java private 接口_java接口中 定义 private 私有方法

    在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...

  8. java 生成随机数_Java 生成随机数的 N 种方法

    原标题:Java 生成随机数的 N 种方法 www.baeldung.com/java-generating-random-numbers 1.引言 本文将探讨用 Java 生成随机数的不同方法. 2 ...

  9. java 字符串函数_Java字符串函数– 25+必须知道方法

    java 字符串函数 Java字符串函数 (Java String Functions) Java String class has a lot of functions to manipulate ...

最新文章

  1. 了解ES6 The Dope Way Part II:Arrow功能和'this'关键字
  2. MSCKF-Based Visual-Wheel Odometry 轮速视觉融合里程计
  3. Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 6 ----asp.net MVC+Extjs
  4. 去火星的票和背后的故事!
  5. SIP代理服务器(2)
  6. #define va_arg(AP, TYPE)
  7. python中文字体怎么设置_python matplotlib 中文字体设置
  8. 大咖面对面 | 陈果果博士谈智能语音
  9. Android TextView 带背景的文字垂直方向显示(ems属性)
  10. 2021年中国电热饭盒市场趋势报告、技术动态创新及2027年市场预测
  11. Sevlet处理HTML表单
  12. R与Python手牵手:多格式文件导入与爬虫
  13. Python学习-9.Python函数定义
  14. wsdl2java 参数_wsdl2java参数详解
  15. sql server 不是可以识别的 内置函数名称
  16. ADAS/AD控制器模块开发01 - 行业背景、基本概念名词介绍
  17. 6个常用大数据分析工具集锦
  18. 【超详细】全国大学生软件测试大赛:移动应用测试参赛指南
  19. 关于HTTP请求出现405状态码 Method not allowed的解决办法
  20. dev hdb2在linux中表示,Linux磁盘分区基础

热门文章

  1. 简述网络调研的作用_利用龙伯球透镜天线提升高铁4G网络覆盖
  2. expdp导出 schema_Oracle使用数据泵在异机之间导出导入多个 schema
  3. 织梦task_do.php,织梦20160906更新后栏目空白问题
  4. java io 文件路径_【IO流】java中文件路径(相对路径、绝对路径)相关类及方法...
  5. Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈)
  6. Oracle中start with xx connect by prior 语句解析
  7. 电脑4次连续故障音_格力空调电子膨胀阀故障判定与“E6”处理方法
  8. 855计算机应用基础,2017年曲阜师范大学信息技术与传播学院855计算机应用基础考研导师圈点必考题汇编...
  9. oracle数据库连接满了,ORACLE数据库连接数满的分析及优化
  10. 2021年香河一中高考成绩查询,2021年廊坊高考状元名单公布,廊坊文理科状元是谁多少分...