当我按下 CTRL - C 在控制台中,应用程序线程停止和关闭钩子的调用顺序是什么?
当我按下 CTRL - C 在控制台中,应用程序线程停止和关闭钩子的调用顺序是什么?
根据javadocs,注册的关闭钩子被调用 不明 JVM开始关闭时的顺序;例如响应CTRL-C。
应用程序线程不会以任何明确定义的方式“停止”。实际上,他们可以继续正常运行,直到流程退出。
如果您希望以有序的方式关闭线程,则需要在关闭钩子中执行某些操作以使其发生。例如,关闭挂钩可以调用 Thread.interrupt()
告诉工作者线程停止他们正在做什么......并打电话 join()
确保它已经发生。
我知道您可以通过添加关闭钩子来指定在击中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...");
}
}));
}