Пул потоков живет на
Пул потоков исполнителя может продолжить работу после завершения работы родительского приложения.Поэтому при выходе из приложения всегда следует выполнять плавное завершение исполнителя.
ServletContextListener
В случае веб-приложения, основанного на технологии Java Servlet , Спецификация сервлета определяет ловушку для запуска и выхода вашего веб-приложения.
Этот хук является интерфейсом ServletContextListener
.Для этого интерфейса требуется пара методов: один из них вызывается контейнером сервлетов перед обработкой первого входящего запроса в ваше веб-приложение, а другой метод вызывается после отправки последнего ответа.Спецификации требуют, чтобы каждый контейнер сервлета, такой как Tomcat, вызывал эти методы в соответствующие моменты времени.
В этих двух методах есть место для создания экземпляра службы исполнителя и его закрытия.
Вы реализуете интерфейс, написав класс.Вы также должны пометить этот класс в контейнере.Самый простой способ пометить его - с помощью аннотации @WebListener
.
Это уже много раз освещалось при переполнении стека.Так что ищите больше информации и примеров.
JSR 236: Утилиты параллелизма для Java TM EE
Эта работа намного проще, если использовать полный-blown Jakarta EE (ранее Java EE ) реализация (Glassfish, Payara, JBoss и т. д.), а не простой контейнер сервлетов (Tomcat, Jetty и т. д.).Такой сервер обеспечит реализацию JSR 236 для автоматической обработки жизненного цикла исполнителя.Так что вам не нужно реализовывать ServletContextListener
.
Это также неоднократно решалось при переполнении стека.Так что ищите больше информации.