假设我们有一个用Java编写的琐碎的守护程序:
public class Hellow {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
while(true) {
// 1. do
// 2. some
// 3. important
// 4. job
// 5. sleep
}
}
}
Run Code Online (Sandbox Code Playgroud)
我们将其守护进程start-stop-daemon默认情况下使用以下命令发送SIGTERM(TERM)信号:--stop
假设当前执行的步骤是#2。此时此刻,我们正在发送TERM信号。
发生的事情是执行立即终止。
我发现我可以使用处理信号事件,addShutdownHook()但事实是它仍然会中断当前执行并将控件传递给处理程序:
public class Hellow {
private static boolean shutdownFlag = false;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application …Run Code Online (Sandbox Code Playgroud)