Java 进程终止 - onEnd()?

Java Process Termination - onEnd()?

当您通过 PID 强制终止进程时:

kill -9 1123

是否有在进程终止时调用的任何方法,该方法会暂停直到关闭?

查看链接以检查两种信号之间的差异以及如何捕获它们等。

简而言之,sigterm 允许进程在结束前清理他的东西(他的最后遗愿),但 sigkill 不会也不可能被您的应用程序困住! (想象程序 运行 永远不可阻挡,这将是一团糟)

补充阅读:

Why I am not getting signal SIGKILL on kill -9 command in bash?

https://major.io/2010/03/18/sigterm-vs-sigkill/

http://www.learnlinux.org.za/courses/build/shell-scripting/ch12s03.html

对于java,你可以在你的进程中添加一个ShutdownHook,当sigterm被发送到这个进程时,ShutdownHook中的代码将在jvm自行关闭之前执行。

    Runtime.getRuntime().addShutdownHook(new Thread() {
        @Override
        public void run() {
            //your cleanup codes
        }
    });