Предположим,
Контейнер Tomcat, на котором запущено веб-приложение.
Запустите команду выключения Tomcat.
В моем случае контейнер Tomcat не завершает работу, поскольку существуют потоки задач, которые остаются после запуска команды выключения.
Если в Tomcat нет магии, о которой я не знаю (возможно), возможно, проблема в том, что ваши спящие потоки не являются потоками демонов. Как только инициируется отключение JVM (через внешний сигнал HUP / INT / TERM или System.exit или любым другим способом), JVM будет ожидать завершения, пока все потоки, не являющиеся демонами, завершатся нормально. Вам нужно будет организовать упорядоченное завершение работы спящих потоков или установить daemon = true при их создании.