Когда должна происходить очистка приложения

Я просто читал, что мы можем использовать перехватчики завершения работы в качестве примера того времени, когда было бы идеально предоставить функции для clean up до выхода из приложения.

Мне было интересно, если, например, у вас есть приложение, которое должно работать 24 часа в сутки, как веб-сервис, когда было бы идеальным временем для завершения и очистки таких вещей, как Executor Services и так далее. Если приложение не должно быть выключено, то действительно ли у нас нет удобного периода очистки или действительно возможности чистого выключения?

Спасибо

1 ответ

Решение

Вопрос слишком широкий, но если я правильно понял, документы Oracle объяснят это:

Пул, на который больше нет ссылок в программе И нет оставшихся потоков, будет автоматически отключен. Если вы хотите, чтобы неиспользуемые пулы были восстановлены, даже если пользователи забыли вызвать shutdown(), вы должны организовать, чтобы неиспользуемые потоки в конечном счете умирали, устанавливая соответствующее время поддержания активности, используя нижнюю границу нулевых потоков ядра и / или установка allowCoreThreadTimeOut(логическое значение).

Так, например, ExecutorService, который создается Executors.newSingleThreadExecutor() это пример FinalizableDelegatedExecutorService, Теперь ExecutorService класс имеет finalize() метод, который вызывает shutdown() метод обернутого объекта ExecutorService.

Другие вопросы по тегам