当我按下CTRL -中应用程序线程停止什么顺序,并呼吁关闭挂钩下,在控制台?
Answer 1:
据的javadoc,注册关闭挂钩被称为未指定顺序的JVM开始关闭时; 例如,响应于一个CTRL-C。
按照任何定义的方式应用程序线程不是“停止”。 事实上,他们可能会继续向上运行,直至正确的进程退出。
如果你希望你的线程能够以一种有序的方式被关闭,你需要做的事情在关闭挂钩导致这种情况发生。 举例来说,关闭钩子可以调用Thread.interrupt()
来告诉工作线程停止他们在做什么......,并调用join()
,以确保它已经发生。
Answer 2:
我知道,你可以指定当被加入关闭挂钩按下Ctrl-C会发生什么。 但我不知道在什么样的顺序。
private static void createShutDownHook()
{
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable()
{
@Override
public void run()
{
System.out.println();
System.out.println("Thanks for using the application");
System.out.println("Exiting...");
}
}));
}
文章来源: How does CTRL-C work with Java program