Java Spring计划任务停止工作的时间更长
我们使用以下注释将10个计划任务配置为每20秒运行一次(它们在夜间停止,因为依赖的系统在凌晨4点重新启动): 我们有一个线程池taks调度程序,其池大小为10: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
@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);
}
}