Перехватывает вызов выключения Java-машины? - PullRequest
5 голосов
/ 30 декабря 2010

Есть ли способ получить уведомление о завершении работы JVM или вызове System.exit до фактического завершения работы?Я хочу этого, чтобы мое приложение могло сделать чистый выход.Я понимаю, что такая вещь вряд ли существует, но все же, может быть, есть что-то подобное?

Ответы [ 2 ]

11 голосов
/ 30 декабря 2010

Посмотрите на Runtime.addShutdownHook

Из документации API:

Виртуальная машина Java отключается в ответ на два вида событий:

  • Программа завершается нормально, когда завершается последний поток, не являющийся демоном, или когда вызывается метод выхода (эквивалентно System.exit), или
  • Виртуальная машина прерывается в ответ на пользовательское прерывание, такое как ввод ^ C, или общесистемное событие, такое как выход пользователя из системы или выключение системы.

Используя Runtime.addShutdownHook, вы можете запускать код в этих случаях.

3 голосов
/ 30 декабря 2010

Существует Runtime.getRuntime().addShutdownHook() метод, который вы, возможно, захотите изучить.

...