Java Spring计划任务停止工作的时间更长

Java Spring计划任务停止工作的时间更长,java,spring,spring-scheduled,Java,Spring,Spring Scheduled,我们使用以下注释将10个计划任务配置为每20秒运行一次(它们在夜间停止,因为依赖的系统在凌晨4点重新启动): 我们有一个线程池taks调度程序,其池大小为10: @Configuration public class SchedulerConfig implements SchedulingConfigurer { private final int POOL_SIZE = 10; @Override public void configureTasks(Schedul

我们使用以下注释将10个计划任务配置为每20秒运行一次(它们在夜间停止,因为依赖的系统在凌晨4点重新启动):

我们有一个线程池taks调度程序,其池大小为10:

@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秒以上的时间,然后可能会由不同的线程同时执行,从而导致其他任务被阻塞。如果允许,您应该增加
池大小

@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);
    }
}