Может ли крюк отключения полагаться на другой поток?
-
05-07-2019 - |
Вопрос
В методе ловушки завершения работы мне нужно отправить сообщение другому процессу, чтобы сказать, что он завершил работу. Мой текущий код обработки сообщений требует, чтобы сообщение было записано в очередь, эта очередь обрабатывается другим потоком и отправляется туда, куда оно направляется. В этом случае для записи в файл канала другим потоком.
Могу ли я гарантировать, что эти потоки по-прежнему будут работать в режиме завершения работы? У меня есть несколько хуков отключения, но все они предназначены для обработки других вещей, которые не нуждаются в других потоках.
Исполнение минимально. Он запустит около 15 строк кода + любое ожидание, необходимое для записи в файл, что также должно быть минимальным. Р>
Решение
Из описания Javadoc для addShutdownHook :
" Обратите внимание, что потоки демона будут продолжать работать во время последовательности завершения работы, , как и потоки не-демона, если отключение было инициировано путем вызова метода выхода . " р>
Учитывая это, я бы сказал, что можно с уверенностью предположить, что ваш поток все еще будет работать, и что вы сможете общаться с ним. Единственное, против чего я бы предостерегал, это полагаться на то, что ваши отключенные хуки работают в определенном порядке.
Другие советы
Похоже, вам нужен многоэтапный процесс выключения. В многопоточной среде я бы не рассчитывал просто на оценку строк кода, которые необходимо выполнить, чтобы дать вам руководство по процедуре завершения работы ...