`

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-...

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

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

    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文档:...

    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依赖...

    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文档:...

    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.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依赖...

    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文档:...

    arcgis-runtime-sdk-java-100.13.1.zip

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

    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文档:...

    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文档:...

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

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

    antlr-runtime-3.4-API文档-中文版.zip

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

    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 #安装完后需要重启容器,未设置为系统启动...

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

    电脑缺少api-ms-win-crt-runtime-dll-v3,电脑缺少api-ms-win-crt-runtime-dll-v3

    api-ms-win-crt-runtime-l1-1-0

    api-ms-win-crt-runtime-l1-1-0完美解决你的问题。 api-ms-win-crt-runtime-l1-1-0完美解决你的问题。api-ms-win-crt-runtime-l1-1-0完美解决你的问题。api-ms-win-crt-runtime-l1-1-0完美解决你的问题。api-ms-win-...

    windowsdesktop-runtime-3.1.28-win-x64

    windowsdesktop-runtime-3.1.28-win-x64

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

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

Global site tag (gtag.js) - Google Analytics