如何为JVM添加关闭钩子与简要分析

发布网友 发布时间:2022-04-23 02:08

我来回答

2个回答

热心网友 时间:2022-04-09 05:37

最近在看当当开源的数据库分库分表框架Sharding-jdbc的源码,在看ExecutorEngine类时,遇到了很多没用过的JDK api,Sharding-jdbc内部大量的使用了google的工具包Guava。在ExecutorEngine类处理多线程问题部分也同样用到的Guava下面的util.concurrent包的类进处理。而我在看google的Guava的MoreExecutors时便遇到了Runtime.getRuntime().addShutdownHook(hook)。

1、JVM的关闭钩子
JVM的关闭钩子是通过Runtime#addShutdownHook(Thread hook)方法来实现的,根据api是注解可知所谓的 shutdown hook 就是一系例的已初始化但尚未执行的线程对象。

当准备JVM停止前,这些shutdown hook 线程会被执行。以下几种情况会使这个shutdown hook调用:

程序正常退出,这发生在最后的非守护线程退出时,或者在调用 exit(等同于System.exit)方法。

为响应用户中断而终止 虚拟机,如键入 ^C;或发生系统事件,比如用户注销或系统关闭。

注册jvm关闭钩子通过Runtime.addShutdownHook(),实际调用ApplicationShutdownHooks.add()。后者维护了一个钩子集合IdentityHashMap<Thread, Thread> hooks。

热心网友 时间:2022-04-09 06:55

在游览器中,选择逗工具地-逗internet",选择逗安全地选项卡,单击自定义级别按钮,弹出安全设置对话框,在脚本选项中对java小程序脚本选项点选禁用 如果想要关闭的更多,可以将IE游览器activex功能,java功能和脚本功能全部关闭

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com