gpt4 book ai didi

Java:对进程死亡采取行动?

转载 作者:行者123 更新时间:2023-12-02 08:22:07 24 4
gpt4 key购买 nike

我正在调试一个 Java 应用程序,这经常涉及终止进程。我想在应用程序终止之前进行一些清理。有没有办法捕捉事件并做出相应 react ? (有点像在 Python 中捕获KeyboardInterrupt

更新:我尝试将其添加到main(),但它似乎不起作用:

Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
System.out.println("Closing...");
}
});

代码无法运行。

最佳答案

如果您通过 Eclipse 中的“停止”按钮停止进程,则关闭 Hook 将不会运行。据我所知,在这种情况下没有任何方法可以运行钩子(Hook)——它几乎杀死了 JVM,没有机会进行清理。如果您从命令行运行,则 CTRL+C 可以工作,但我认为您不能在 Eclipse 中很好地做到这一点。

丑陋的黑客:

在 main 的开头添加类似的内容:

    JFrame killer = new JFrame("Killer");
killer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
killer.setSize(100, 100);
killer.setVisible(true);

关闭生成的窗口将触发 System.exit(),这应该允许关闭 Hook 运行。当然,如果程序在调试器中挂起,这将不起作用。 YMMV。

关于Java:对进程死亡采取行动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5281431/

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