簡體   English   中英

春季計划任務停止工作更長的時間

[英]Spring scheduled task stops working for a longer period of time

我們配置了10個計划的任務,每20秒運行一次,並帶有以下注釋(它們在晚上停止,因為相關系統在凌晨4點重新啟動):

@Scheduled(cron = "*/20 * 0-3,5-23 * * *")
public void pollingMethod1() {
    ...
}
@Scheduled(cron = "*/20 * 0-3,5-23 * * *")
public void pollingMethod2() {
    ...
}
...

我們有一個配置為池大小10的線程池taks調度程序:

@Configuration
public class SchedulerConfig implements SchedulingConfigurer {
    private final int POOL_SIZE = 10;

    @Override
    public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
        ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();

        threadPoolTaskScheduler.setPoolSize(POOL_SIZE);
        threadPoolTaskScheduler.setThreadNamePrefix("polling-pool-");
        threadPoolTaskScheduler.initialize();
        threadPoolTaskScheduler.setAwaitTerminationSeconds(120);
        threadPoolTaskScheduler.setWaitForTasksToCompleteOnShutdown(true);

        scheduledTaskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
    }
}

有時,一天中的一項任務不會在一兩個小時內執行,然后繼續定期執行。 一個任務有可能阻止其他任務嗎? 我怎么知道是否是這種情況?

Suppost pollingMethod1需要20秒鍾以上,然后它可能同時由不同的線程執行,這導致其他任務被阻塞。 如果允許,則應增加POOL_SIZE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM