小编Isl*_*aev的帖子

如何在Java中正常处理SIGTERM信号?

假设我们有一个用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)

java daemon process sigterm start-stop-daemon

6
推荐指数
1
解决办法
2414
查看次数

标签 统计

daemon ×1

java ×1

process ×1

sigterm ×1

start-stop-daemon ×1