0

当我的程序使用 addShutDownHook 时,它表现得很奇怪?

4

3 回答 3

2

addShutDownHook 只是添加了一个新的 Runnable(thread),只有在启动 jvm 关闭序列时才会由 jvm 运行。其中的代码像普通代码一样执行,但仅限于前面提到的特殊情况。它通常用于一些清理或记录目的

请重新检查编写的代码,以确保它“逻辑上”符合您的期望。

java中的信号处理(尤其是在Windows上,文档仍然不是100%清晰) 参考

于 2012-05-04T09:39:07.540 回答
0

发送信号时触发信号处理程序。信号不必关闭应用程序,如果应用程序关闭,则可能不会调用信号处理程序。

于 2012-05-04T09:49:48.593 回答
0

您可以在 SignalHandler 的 handle 方法中实现逻辑,在该方法中,您可以在 unix、ilnux 和 windows 等不同平台(OS)下处理来自当前活动进程的不同信号。SignalHandler 中的逻辑可以像标准输出信号名称和时间戳一样,在接收到某些特殊信号类型时记录或关闭进程。

当我们使用 addShutDownHook 时,我们只是设置了线程退出的顺序,只有当 JVM 开始关闭时才会触发线程退出的顺序。

我们经常在线程中使用 addShutDownHook 这个方法来释放资源或者网络连接,而 SignalHandler && Signal 经常被用来监控在这个进程活跃时间内服务器进程从哪里接收到什么以及接收到什么。

于 2020-05-08T14:59:37.443 回答