Java ShutdownHook иногда не работает или работает только частично (случайное поведение на Sigint)JAVA

Программисты JAVA общаются здесь
Anonymous
Java ShutdownHook иногда не работает или работает только частично (случайное поведение на Sigint)

Сообщение Anonymous »

Я сталкиваюсь с странной проблемой с системой выключения Java. У меня есть ShutdownHook, зарегистрированный через Runtime.getRuntime (). AddShutDownHook (...), который должен очистить двигатель, восстановить состояние терминала и шаги выключения журнала. Иногда крючок отключения отлично работает и регистрирует все, в других случаях он работает только частично или нет вообще. Порядок выполнения и глубины различаются случайным образом, особенно при остановке приложения через Ctrl+C (Sigint).
Что я наблюдаю:
код выхода всегда составляет 130 (как и ожидалось для Sigint).
Иногда журналы отключения крючков появляются полностью. />https://pastebin.com/yqs9rhw7
Весь код для логики можно найти в ссылке Pastebin.
Журналы примеров из разных запусков:

Код: Выделить всё

[19:40:11] [main/INFO]: Fibre engine started with thread: Fibre Engine Thread
[19:40:11] [Fibre Engine Thread/INFO]: Starting engine...
[19:40:11] [Fibre Console Handler/INFO]: Starting console handler thread...
[19:40:13] [Thread-0/INFO]: Shutting down Fibre engine...
[19:40:13] [Fibre Engine Thread/INFO]: Engine loop was terminated by shutdown hook.
второй: [/b]
[19:41:51] [main/INFO]: Fibre engine started with thread: Fibre Engine Thread
[19:41:51] [Fibre Engine Thread/INFO]: Starting engine...
[19:41:51] [Fibre Console Handler/INFO]: Starting console handler thread...
[19:41:53] [Thread-0/INFO]: Shutting down Fibre engine...
[19:41:53] [Fibre Engine Thread/INFO]: Engine loop was terminated by shutdown hook.
[19:41:53] [Thread-0/INFO]: Shutting down Fibre Dedicated Engine...
< /code>
Как вы можете видеть, иногда «выключение оптоволоконного двигателя ...» появляется, иногда это не так - хотя один и тот же код работает каждый раз. Я подозреваю, что это может быть каким -то образом связано с порядком, в котором убиты потоки, или как крючок отключения взаимодействует с потоком двигателя.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... m-behavior

Вернуться в «JAVA»