CTRL-C如何与Java程序一起工作

2022-09-04 02:41:48

当我在控制台中按 - 应用程序线程停止和关闭挂钩的顺序是什么?ctrlc


答案 1

根据javadocs,当JVM开始关闭时,注册的关闭钩子以未指定的顺序调用;例如,响应CTRL-C。

应用程序线程不会以任何明确定义的方式“停止”。实际上,它们可以继续运行,直到进程退出。

如果您希望以有序的方式关闭线程,则需要在关闭挂钩中执行一些操作才能使这种情况发生。例如,关闭钩子可以调用来告诉工作线程停止他们正在执行的操作...并致电以确保它已发生。Thread.interrupt()join()


答案 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...");

        }
    }));
}

推荐