Ответ 1
JVM самостоятельно реагирует на сигналы. Некоторые из них приведут к тому, что JVM будет отключен изящно, что включает в себя запуск завершающих перехватчиков. Другие сигналы приведут к тому, что JVM прекратит работу, не запуская крючки отключения.
Крюки завершения работы добавляются с помощью Runtime.addShutdownHook(Thread).
Я не думаю, что JDK предоставляет официальный способ обработки сигналов в вашем Java-приложении. Тем не менее, я нашел эту статью IBM, в которой описывается использование некоторого недокументированного класса sun.misc.Signal
, чтобы сделать именно это. Статья датируется 2002 годом и использует JDK 1.3.1, но я подтвердил, что класс sun.misc.Signal
все еще существует в JDK 1.6.0.