System.exit(0) 上未执行 ShutdownHook 代码
ShutdownHook code not being executed on System.exit(0)
我有附加到运行时的关闭挂钩
Runtime.getRuntime().addShutdownHook(new ShutDownHook(false));
这是一个 shutDownHook Class
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();
}
});
应用程序关闭 bud hook 执行没有通过,知道为什么吗?
我知道有些情况下 ShutdownHook 不执行 bud im 关闭我的应用程序 System.exit(0);
应该是安全的吗?
好的,我发现了一个问题,我有多个 ShutDownHooks 挂钩,由于某种原因这个没有执行,我删除了一个,现在一切正常 ok.Maybe 负载太大。
工作完美,如果您使用 netbeans,请不要使用红色终止按钮,- 只是一种 note.That 永远不会执行 SDH 的方式。
我有附加到运行时的关闭挂钩
Runtime.getRuntime().addShutdownHook(new ShutDownHook(false));
这是一个 shutDownHook Class
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();
}
});
应用程序关闭 bud hook 执行没有通过,知道为什么吗?
我知道有些情况下 ShutdownHook 不执行 bud im 关闭我的应用程序 System.exit(0);
应该是安全的吗?
好的,我发现了一个问题,我有多个 ShutDownHooks 挂钩,由于某种原因这个没有执行,我删除了一个,现在一切正常 ok.Maybe 负载太大。
工作完美,如果您使用 netbeans,请不要使用红色终止按钮,- 只是一种 note.That 永远不会执行 SDH 的方式。