Как CTRL-C работает с программой Java

Когда я нажимаю ctrl - c в консоли, в какой последовательности остановлены потоки приложений и вызываемые вызовы?

Ответ 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...");

        }
    }));
}