Используйте ScheduledThreadPoolExecutor
.ScheduledExecutorService
- это служба исполнителя, которая позволяет планировать будущие и повторяющиеся асинхронные задачи в Java.
Было отмечено, что длинные / повторяющиеся задачи, выполняемые с использованием ScheduledExecutorService
, могут привести к утечкам памяти.Начиная с Java 7, ScheduledThreadPoolExecutor предоставил новый метод setRemoveOnCancelPolicy.Убедитесь, что этот флаг установлен, в качестве меры предосторожности.
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
// Explicitly call setRemoveOnCancelPolicy on the instance
executor.setRemoveOnCancelPolicy(true);
Согласно javaDoc, setRemoveOnCancelPolicy устанавливает политику того, должны ли отмененные задачи немедленно удаляться из рабочей очереди во время отмены.Это значение по умолчанию false