`

java-Runtime钩子回调

阅读更多
----------~开篇分享一句话:【纸上得来终觉浅,绝知此事要躬行】~---------------------------------------
  在线上Java程序中经常遇到进程程挂掉,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的代码。Java中得ShutdownHook提供了比较好的方案。
JDK在1.3之后提供了Java Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子,这个钩子可以在以下几种场景被调用:

1)程序正常退出
2)使用System.exit()
3)终端使用Ctrl+C触发的中断
4)系统关闭


比如 ExecutorService的shutdown 方法,在关闭tomcat或者jvm退出时调用,能保证已经提交的任务得以执行,如果不调用,那么可能直接退出,导致已经提交的任务也无法执行。

下面这个case说明了钩子使用的场景
public class TaskUtil {
    private static Logger logger = LoggerFactory.getLogger(TaskUtil.class.getName());
    private static ScheduledExecutorService service = Executors.newScheduledThreadPool(8);
    private static void close() {
        try {
            service.shutdown();
        } catch (Exception e) {
            try {
                service.shutdownNow();
            } catch (Exception e1) {
                logger.error(e1.getMessage(), e1);
            }
        }
    }
    
    public static void registerTask(BaseTask task,long delay,TimeUnit unit){
        service.schedule(task, delay, unit);
        logger.info("注册任务:{} 成功", new Object[] {task.getMyTaskName()});
    }
    
   static {
       Runtime.getRuntime().addShutdownHook(new Thread() {
           public void run() {
              close();
           }
       });
   }
}
分享到:
评论

相关推荐

    istack-commons-runtime-3.0.12-API文档-中文版.zip

    赠送jar包:istack-commons-runtime-3.0.12.jar; 赠送原API文档:istack-commons-runtime-3.0.12-javadoc.jar; 赠送源代码:istack-commons-runtime-3.0.12-sources.jar; 赠送Maven依赖信息文件:istack-commons-...

    istack-commons-runtime-3.0.12-API文档-中英对照版.zip

    赠送jar包:istack-commons-runtime-3.0.12.jar; 赠送原API文档:istack-commons-runtime-3.0.12-javadoc.jar; 赠送源代码:istack-commons-runtime-3.0.12-sources.jar; 赠送Maven依赖信息文件:istack-commons-...

    jaxb-runtime-2.3.5-API文档-中英对照版.zip

    赠送jar包:jaxb-runtime-2.3.5.jar; 赠送原API文档:jaxb-runtime-2.3.5-javadoc.jar; 赠送源代码:jaxb-runtime-2.3.5-sources.jar; 赠送Maven依赖信息文件:jaxb-runtime-2.3.5.pom; 包含翻译后的API文档:...

    jamon-runtime-2.3.1-API文档-中文版.zip

    赠送jar包:jamon-runtime-2.3.1.jar; 赠送原API文档:jamon-runtime-2.3.1-javadoc.jar; 赠送源代码:jamon-runtime-2.3.1-sources.jar; 赠送Maven依赖信息文件:jamon-runtime-2.3.1.pom; 包含翻译后的API文档...

    jaxb-runtime-2.3.5-API文档-中文版.zip

    赠送jar包:jaxb-runtime-2.3.5.jar; 赠送原API文档:jaxb-runtime-2.3.5-javadoc.jar; 赠送源代码:jaxb-runtime-2.3.5-sources.jar; 赠送Maven依赖信息文件:jaxb-runtime-2.3.5.pom; 包含翻译后的API文档:...

    flink-runtime_2.11-1.13.2-API文档-中文版.zip

    标签:apache、flink、runtime、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...

    flink-runtime-web_2.11-1.13.2-API文档-中英对照版.zip

    赠送jar包:flink-runtime-web_2.11-1.13.2.jar; 赠送原API文档:flink-runtime-web_2.11-1.13.2-javadoc.jar; 赠送源代码:flink-runtime-web_2.11-1.13.2-sources.jar; 赠送Maven依赖信息文件:flink-runtime-...

    解决api-ms-win-crt-runtime-l1-1-0.dll 丢失问题 绿色版 工具下载

    提示api-ms-win-crt-runtime-l1-1-0.dll 丢失,安装这个小玩意就可以解决了

    flink-runtime-web-2.11-1.13.2-API文档-中文版.zip

    赠送jar包:flink-runtime-web_2.11-1.13.2.jar; 赠送原API文档:flink-runtime-web_2.11-1.13.2-javadoc.jar; 赠送源代码:flink-runtime-web_2.11-1.13.2-sources.jar; 赠送Maven依赖信息文件:flink-runtime-...

    flink-table-runtime-blink-2.11-1.12.7-API文档-中文版.zip

    赠送jar包:flink-table-runtime-blink_2.11-1.12.7.jar; 赠送原API文档:flink-table-runtime-blink_2.11-1.12.7-javadoc.jar; 赠送源代码:flink-table-runtime-blink_2.11-1.12.7-sources.jar; 赠送Maven依赖...

    antlr4-runtime-4.7-API文档-中文版.zip

    赠送jar包:antlr4-runtime-4.7.jar; 赠送原API文档:antlr4-runtime-4.7-javadoc.jar; 赠送源代码:antlr4-runtime-4.7-sources.jar; 赠送Maven依赖信息文件:antlr4-runtime-4.7.pom; 包含翻译后的API文档:...

    arcgis-runtime-sdk-java-100.11.2.zip

    在arcgis开发者官网下载的rumtime 100.11.2开发包java版本,由于官网抽风经常上不去,我下载了上传造福大家

    antlr4-runtime-4.2-API文档-中文版.zip

    赠送jar包:antlr4-runtime-4.2.jar; 赠送原API文档:antlr4-runtime-4.2-javadoc.jar; 赠送源代码:antlr4-runtime-4.2-sources.jar; 赠送Maven依赖信息文件:antlr4-runtime-4.2.pom; 包含翻译后的API文档:...

    nvidia-container-runtime离线包安装

    #解压nvidia-container-runtime.tar.gz tar -zxvf nvidia-container-runtime.tar.gz #离线安装所有rpm包 cd nvidia-container-runtime rpm -Uvh --force --nodeps *.rpm #安装完后需要重启容器,未设置为系统启动...

    flink-table-runtime-blink_2.11-1.10.0-API文档-中文版.zip

    赠送jar包:flink-table-runtime-blink_2.11-1.10.0.jar; 赠送原API文档:flink-table-runtime-blink_2.11-1.10.0-javadoc.jar; 赠送源代码:flink-table-runtime-blink_2.11-1.10.0-sources.jar; 赠送Maven依赖...

    arcgis-runtime-sdk-java-100.13.1.zip

    《ArcGIS Runtime SDK for Java 100.13.1:深度解析与应用实践》 ArcGIS Runtime SDK for Java 100.13.1是Esri公司推出的一款强大的地图和地理空间应用程序开发工具,它专为Java开发者设计,提供了一整套API和功能...

    windowsdesktop-runtime-6.0.29-win-x64

    windowsdesktop-runtime-6.0.29-win-x64

    java-cup-11b-runtime-2015.03.26.jar

    java运行依赖jar包

    jamon-runtime-2.3.1-API文档-中英对照版.zip

    赠送jar包:jamon-runtime-2.3.1.jar; 赠送原API文档:jamon-runtime-2.3.1-javadoc.jar; 赠送源代码:jamon-runtime-2.3.1-sources.jar; 赠送Maven依赖信息文件:jamon-runtime-2.3.1.pom; 包含翻译后的API文档...

    api-ms-win-crt-runtime-dll-v3

    **API-MS-WIN-CRT-RUNTIME-DLL-V3:关键系统组件解析** API-MS-WIN-CRT-RUNTIME-DLL,通常被称为msvcrt.dll或 ucrtbase.dll,是微软Windows操作系统中的一个核心动态链接库(DLL),属于Windows API的一部分。这个...

Global site tag (gtag.js) - Google Analytics