如何与Java程序CTRL-C工作(How does CTRL-C work with Java p

2019-09-19 08:49发布

当我按下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