Перехватывает вызов выключения Java-машины?
Есть ли способ получить уведомление о завершении работы JVM или вызове System.exit до фактического завершения работы? Я хочу этого, чтобы мое приложение могло сделать чистый выход. Я понимаю, что такая вещь вряд ли существует, но все же, может быть, есть что-то подобное?
2 ответа
Решение
Посмотрите на Runtime.addShutdownHook
Из документации API:
Виртуальная машина Java отключается в ответ на два вида событий:
- Программа завершается нормально, когда завершается последний поток, не являющийся демоном, или когда вызывается метод exit (эквивалентно System.exit), или
- Виртуальная машина прерывается в ответ на пользовательское прерывание, такое как ввод ^C, или общесистемное событие, такое как выход пользователя из системы или завершение работы системы.
С помощью Runtime.addShutdownHook
Вы можете запустить код в этих случаях.
Там в Runtime.getRuntime().addShutdownHook()
метод, который вы могли бы изучить.