gpt4 book ai didi

java - 如何优雅地停止java进程?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:33:23 30 4
gpt4 key购买 nike

如何在 Linux 和 Windows 中优雅地停止 Java 进程?

Runtime.getRuntime().addShutdownHook 何时被调用,何时不被调用?

终结器呢,它们在这里有帮助吗?

我可以从 shell 向 Java 进程发送某种信号吗?

我正在寻找最好的可移植解决方案。

最佳答案

关闭 Hook 在 VM 未被强制终止的所有情况下执行。因此,如果您发出“标准”kill(来自 kill 命令的 SIGTERM),它们就会执行。同样,它们会在调用 System.exit(int) 后执行。

但是硬杀(kill -9kill -SIGKILL)它们不会执行。同样(而且很明显),如果您从计算机上拔下电源,将其放入一桶沸腾的熔岩中,或者用大锤将 CPU 敲成碎片,它们也不会执行。不过,您可能已经知道了。

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

关于java - 如何优雅地停止java进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23484260/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com