Я использую ScheduledExecutorService
внутри Spring Singleton. Он выполняет периодическую проверку, которую планируется запускать каждые x минут. Я лениво (или наполовину лениво) инициализирую переменные-члены Singleton (Исполнитель), реализуя метод ApplicationListener<ContextStartedEvent>#onApplicationEvent
- который создал ScheduledExecutorService
и назначил задачу.
Мне нужно разобраться с отключением ExecutorService
и задаться вопросом, как это сделать правильно. Я знаю, что у Spring есть процесс завершения работы контекста, и я удивляюсь, имеет ли смысл вызывать завершение работы где-то оттуда.
Что именно происходит, если ExecutorService
не завершает работу, а Сервер закрывается или завершается? Разве JVM не очищает всю память, связанную с этой программой?
Спасибо