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
}
});
当您通过 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
}
});