CTRL-C如何与Java程序一起工作
2022-09-04 02:41:48
当我在控制台中按 - 应用程序线程停止和关闭挂钩的顺序是什么?ctrlc
当我在控制台中按 - 应用程序线程停止和关闭挂钩的顺序是什么?ctrlc
根据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...");
}
}));
}