JAVA: как вызвать метод, когда процесс остановлен (возможно ли это?) - PullRequest
5 голосов
/ 16 июля 2009

Я хочу, чтобы когда мои пользователи запускали мою программу из командной строки, а затем убивали процесс (например, Ctrl + C), программа корректно завершит работу, закрыв все свои соединения. Это вообще возможно? Я не могу просто вызвать метод при закрытии как GUI? Эта программа не имеет графического интерфейса.

Пожалуйста, дайте мне знать.

1 Ответ

8 голосов
/ 16 июля 2009

Вот довольно хорошее руководство по обработке сигналов в Java . Он также охватывает случаи отключения и завершения работы, включая Ctrl-C.

Конкретный требуемый вызов находится во время выполнения, addShutdownHook .

Есть еще определенные случаи, которые вы не можете обработать ... обычно есть какой-то способ для ОС просто убить приложение, не давая ему возможности спасти себя. Вы не можете охватить каждый случай с помощью этого механизма. Цитировать JavaDoc

В редких случаях виртуальная машина может прерваться, то есть прекратить работу без выключения. Это происходит, когда виртуальная машина завершается извне, например, с помощью сигнала SIGKILL в Unix или вызова TerminateProcess в Microsoft Windows. Виртуальная машина также может прерваться, если собственный метод не работает, например, из-за повреждения внутренних структур данных или попытки доступа к несуществующей памяти. Если виртуальная машина прерывает работу, то нельзя гарантировать, будут ли запущены какие-либо перехватчики завершения работы.

...