Я использовал Spring Framework Scheduled
, чтобы запланировать выполнение моей работы каждые 5 минут с помощью cron. Но когда-то моя работа бесконечно ждет внешнего ресурса, и я не могу установить тайм-аут там. Я не могу использовать fixedDelay
, поскольку предыдущий процесс когда-то бесконечно идет в ожидании, и я должен обновлять данные каждые 5 минут.
Итак, я искал любую опцию в Spring Framework Scheduled
, чтобы остановить этот процесс/поток после того, как fixed-time
либо он успешно выполнил, либо нет.
Ниже я установил параметр, который инициализировал ThreadPoolExecutor
с 120 секундами для keepAliveTime
, который я ввел в класс @Configuration
. Может ли кто-нибудь сказать мне, будет ли это работать так, как я ожидал.
@Bean(destroyMethod="shutdown")
public Executor taskExecutor() {
int coreThreads = 8;
int maxThreads = 20;
final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
coreThreads, maxThreads, 120L,
TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>()
);
threadPoolExecutor.allowCoreThreadTimeOut(true);
return threadPoolExecutor;
}