为了账号安全,请及时绑定邮箱和手机立即绑定

如何优雅地停止java进程?

如何优雅地停止java进程?

慕的地8271018 2019-08-30 17:09:41
如何在Linux和Windows中优雅地停止Java进程?何时Runtime.getRuntime().addShutdownHook被召唤,什么时候不召唤?终结者怎么样,他们在这里有帮助吗?我可以从shell向Java进程发送某种信号吗?我正在寻找最好的便携式解决方案。
查看完整描述

3 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

在未强制终止VM的所有情况下,执行关闭挂钩。因此,如果您要发出“标准”kill(SIGTERM来自kill命令),那么它们将执行。同样,他们会在打电话后执行System.exit(int)

然而,硬杀(kill -9kill -SIGKILL)然后他们将不会执行。同样(显然)如果你从计算机上取下电源,将它放入一桶沸腾的熔岩中,或者用大锤将CPU打成碎片,它们就不会执行。不过你可能已经知道了。

终结器确实应该运行,但最好不要依赖它来进行关机清理,而是依靠你的关闭钩子来干净地停止事情。并且,一如既往,小心死锁(我已经看到太多的关机挂钩挂起整个过程)!


查看完整回答
反对 回复 2019-08-30
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

另一种方式:您的应用程序可以打开服务器socet并等待到达它的信息。例如,一个带有“魔术”单词的字符串:)然后做出反应以进行关闭:System.exit()。您可以使用telnet等外部应用程序将此类信息发送到socke。


查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 812 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信