发布网友 发布时间: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功能和脚本功能全部关闭