Можно ли использовать отключающие крючки для чуть более длинной задачи - PullRequest
2 голосов
/ 29 июня 2011

Я столкнулся с функциональностью shutdown hooks, которая вызывается при завершении работы java-приложения.

  • Я использую сигнал SIGTERM для завершения процесса java на linux Box.

  • И во время выключения я хочу выполнить дисковый ввод-вывод (сохранение некоторых объектов) и закрыть буфер открытых файлов (это может занять до 1 минуты)

  • Можете ли вы посоветовать, являются ли отключающие крюки безопасным / надежным механизмом для этого случая использования

  • Если есть какая-либо лучшая альтернатива, пожалуйста, предложите.

1 Ответ

3 голосов
/ 29 июня 2011

В этом проектном документе ничего не говорится о том, как долго разрешено запускать нить крюка отключения. Но читая между строк (тот факт, что есть Runtime.halt, я думаю, что вы в безопасности.)

Теперь имейте в виду, что некоторые другие фреймворки, на которые вы полагаетесь, могли одновременно закрываться, поэтому ваш хук не должен полагаться ни на что, кроме вашего собственного кода.

Вы также можете найти другой интересный вопрос: Как изящно остановить процесс Java? .

...