Aar*_*ang 2 java multithreading jvm shutdown-hook
跟进上一个问题
如果您已经阅读了上一个问题,则另一个标题可能是:
我的守护程序应该多久检查一次它是否被中断?
当JVM发出退出信号时,它会运行一个关闭进程,启动所有关闭挂钩线程,然后等待它们完成.操作系统决定等待多长时间,这取决于用于启动过程终止的方法.你可以通过一个简单的测试程序为自己尝试这个:
public static void main ( String[] args ) throws InterruptedException {
Runtime.getRuntime ().addShutdownHook ( new Thread () {
@Override
public void run () {
System.out.println ( "Shutdown hook" );
while ( true ) { }
}
} );
while ( true ) {
System.out.println ( "Looping" );
Thread.sleep ( 10000 );
}
}
Run Code Online (Sandbox Code Playgroud)
如果用ctrl + c发出进程信号,进程将启动关闭挂钩,但永远不会完成.如果你在关闭钩子中删除忙循环,你会看到它在钩子完成时终止.
| 归档时间: |
|
| 查看次数: |
3296 次 |
| 最近记录: |