Обрабатывать сигналы в виртуальной машине Java

Можно ли обрабатывать сигналы POSIX в виртуальной машине Java?

По крайней мере, SIGINT и SIGKILL должны быть достаточно независимыми от платформы.

2 ответа

Решение

JVM реагирует на сигналы самостоятельно. Некоторые из них приведут к корректному завершению работы JVM, что включает в себя запуск ловушек отключения. Другие сигналы приведут к прерыванию работы JVM без запуска отключений.

Хуки отключения добавляются с помощью Runtime.addShutdownHook (Thread).

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

Возможно Runtime # addShutdownHook?

Другие вопросы по тегам