Java 关机挂钩问题
Issue with Java Shutdown hook
我的测试代码如下:
public static void main(String[] args) throws IOException, InterruptedException {
// TODO Auto-generated method stub
while(true) {
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable()
{
public void run()
{
System.out.println("Shutdown Hook is running !");
System.out.println("Application Terminating ...");
}
}));
System.out.println("Running");
}
}
我 运行 eclipse 中的代码,转到调试选项卡,我可以在 运行 中看到它 state.I 右键单击 -> 终止。关闭挂钩不会执行。
输出打印:
Running
Running
Running
.
.
.
.
.
.
你处理不了那个案子。似乎 Eclipse 正在发送一个 SIGKILL,它不是正常关闭的一部分,因此无法被捕获。参见
.. 并且 eclipse 不太可能增加发送 nice 'please terminate' 信号的能力(称为 SIGTERM,它会导致 运行 的关闭挂钩),因为 java' s 进程API只有一种退出进程的方法,通过发送SIGKILL实现。
如果您想测试您的关闭挂钩,只需.. 在您自己的应用程序中调用 System.exit(0)
,您将见证您的关闭挂钩 运行ning.
我的测试代码如下:
public static void main(String[] args) throws IOException, InterruptedException {
// TODO Auto-generated method stub
while(true) {
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable()
{
public void run()
{
System.out.println("Shutdown Hook is running !");
System.out.println("Application Terminating ...");
}
}));
System.out.println("Running");
}
}
我 运行 eclipse 中的代码,转到调试选项卡,我可以在 运行 中看到它 state.I 右键单击 -> 终止。关闭挂钩不会执行。
输出打印:
Running
Running
Running
.
.
.
.
.
.
你处理不了那个案子。似乎 Eclipse 正在发送一个 SIGKILL,它不是正常关闭的一部分,因此无法被捕获。参见
.. 并且 eclipse 不太可能增加发送 nice 'please terminate' 信号的能力(称为 SIGTERM,它会导致 运行 的关闭挂钩),因为 java' s 进程API只有一种退出进程的方法,通过发送SIGKILL实现。
如果您想测试您的关闭挂钩,只需.. 在您自己的应用程序中调用 System.exit(0)
,您将见证您的关闭挂钩 运行ning.