Могу ли я разместить много кода с интенсивным использованием процессора и ввода-вывода в ShutDown Hook - PullRequest
4 голосов
/ 06 января 2009

У меня много кода с интенсивным использованием процессора и ввода-вывода в завершение работы. Иногда я вижу, что они не исполняются должным образом. Так есть ли какие-либо ограничения, как будто у нас не должно быть много кода в ловушке завершения работы.

Спасибо Д. Л. Кумар

Ответы [ 3 ]

2 голосов
/ 06 января 2009

Я поместил довольно существенный код в ловушку отключения для одного из моих приложений, и он очень надежно работает на различных операционных системах (Windows XP, Vista, AS400 / iSeries / Systemi, Linux) под различными обстоятельства, включая sigterms и выключение Windows.

Но остерегайтесь тайм-аута отключения любой системы (аля Windows хороша, эта программа не отвечает на диалог).

Также остерегайтесь настоящих команд O / S kill, таких как Linux sigkill (?) И конечный процесс диспетчера задач Windows.

2 голосов
/ 06 января 2009

Просто нет. Внимательно прочитайте API , и вы увидите. Время выключения ограничено. Если вы продлите этот интервал времени, JVM просто завершится / прекратит работу без уведомления. Если вы пишете данные, вы запишите поврежденные данные.

1 голос
/ 06 января 2009

Отключение крюков не гарантируется. Прерывание процесса из-за kill процесса или аппаратного сбоя - типичные случаи, когда перехватчики отключения не запускаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...