gpt4 book ai didi

java - ShutdownHook 代码未在 System.exit(0) 上执行

转载 作者:太空宇宙 更新时间:2023-11-04 12:48:13 25 4
gpt4 key购买 nike

我有附加到运行时的关闭 Hook

Runtime.getRuntime().addShutdownHook(new ShutDownHook(false));

这是一个 shutdownHook 类

public class ShutDownHook extends Thread {

private final boolean interupt;

public ShutDownHook(boolean interupt) {
this.interupt = interupt;
}

@Override
public void run() {

if (interupt) {
return;
}
System.out.println("ShutdownHook Execution");
DbUtil.insertIntoDailyStats(MainDataModel.downloadedBytesSessionProperty().getValue());
MainDataModel.getInstance().loginProfile.getPreferences().putLong(
Info.PreferenceData.PREF_USER_DAILY_STAT_DOWNBYTE, MainDataModel.downloadedBytesTodayProperty().get());

System.out.println("ShutdownHook Execution finished");

}

}

我用一种方法从系统托盘图标关闭我的应用程序

 exit.addActionListener((ActionEvent e) -> {
try {
GlobalScreen.unregisterNativeHook();
System.exit(0);
} catch (NativeHookException ex) {
ex.printStackTrace();
}
});

应用程序关闭芽钩子(Hook)执行没有通过,知道为什么吗?

我知道在某些情况下,ShutdownHook 不会执行,但我用 System.exit(0); 关闭我的应用程序,这应该是安全无害的吗?

最佳答案

好吧,我发现了一个问题,由于某种原因,我有多个 ShutDownHooks 卡在其中,但这个没有执行,我删除了一个旁边的所有内容,现在一切正常。也许负载太大了。

工作完美,如果您使用netbeans,也不要使用红色终止按钮,-只是一个注释。这样您就永远不会执行SDH。

关于java - ShutdownHook 代码未在 System.exit(0) 上执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36099846/

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