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

StackOverflow https://stackoverflow.com/questions/1607555

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top