我已經使用Spring Framework的Scheduled
來安排我的作業使用cron每5分鐘運行一次。但有時我的工作無限期地等待外部資源,我不能在那裏超時。我無法使用fixedDelay
,因爲以前的過程有時會以無限模式進行,我必須每5分鐘刷新一次數據。stop Spring如果它在一段固定的時間後掛起,那麼它會執行計劃執行
所以我在尋找Spring框架的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;
}
你的代碼不會像你期望的那樣工作。 描述你的隨機懸掛作業的更多細節。 –