chu*_*mak 6 java multithreading sigkill kill-process shutdown-hook
我正在编写一个程序,在一个进程中创建多个线程。
我需要处理如果进程被某人使用kill -9信号或Ctrl + C从外部终止,我的程序应该在关闭之前执行一些操作,例如它应该将进程的状态更改为数据库中的中止。
我该如何处理?
我需要addShutdownHook()?或者还有其他更好的解决方案来解决我的问题吗?
我已经添加了 :
Runtime.getRuntime().addShutdownHook( new Thread() {
@Override
public void run() {
logger.info( "Running Shutdown Hook" );
//call some method
System.out.println( "Running Shutdown Hook" );
}
} );
Run Code Online (Sandbox Code Playgroud)
在我的主要方法中,但它似乎不起作用。
简短的回答:可能行不通。
请参阅 JavaDoc 了解addShutdownHook():
在极少数情况下,虚拟机可能会中止,即停止运行而不完全关闭。当虚拟机从外部终止时会发生这种情况,例如 Unix 上的 SIGKILL 信号或 Microsoft Windows 上的 TerminateProcess 调用...如果虚拟机中止,则无法保证是否会运行任何关闭挂钩。
换句话说:关闭挂钩并不是满足您的要求的可靠选择。
| 归档时间: |
|
| 查看次数: |
1212 次 |
| 最近记录: |