----------~开篇分享一句话:【纸上得来终觉浅,绝知此事要躬行】~---------------------------------------
在线上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();
}
});
}
}
分享到:
相关推荐
赠送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-...
赠送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-...
赠送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文档:...
赠送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文档...
赠送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文档:...
标签:apache、flink、runtime、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...
赠送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 丢失,安装这个小玩意就可以解决了
赠送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-...
赠送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依赖...
赠送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开发者官网下载的rumtime 100.11.2开发包java版本,由于官网抽风经常上不去,我下载了上传造福大家
赠送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.tar.gz tar -zxvf nvidia-container-runtime.tar.gz #离线安装所有rpm包 cd nvidia-container-runtime rpm -Uvh --force --nodeps *.rpm #安装完后需要重启容器,未设置为系统启动...
赠送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 for Java 100.13.1:深度解析与应用实践》 ArcGIS Runtime SDK for Java 100.13.1是Esri公司推出的一款强大的地图和地理空间应用程序开发工具,它专为Java开发者设计,提供了一整套API和功能...
windowsdesktop-runtime-6.0.29-win-x64
java运行依赖jar包
赠送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,通常被称为msvcrt.dll或 ucrtbase.dll,是微软Windows操作系统中的一个核心动态链接库(DLL),属于Windows API的一部分。这个...