Может ли крюк отключения полагаться на другой поток?

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

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

Исполнение минимально. Он запустит около 15 строк кода + любое ожидание, необходимое для записи в файл, что также должно быть минимальным.

2 ответа

Решение

Из описания Javadoc addShutdownHook:

"Обратите внимание, что потоки демона будут продолжать работать во время последовательности выключения, как и потоки, не являющиеся демонами, если завершение работы было инициировано путем вызова метода выхода ".

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

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

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