spring-boot中的默认调度程序池大小是多少?

我正在使用spring-boot@Scheduled注释来执行某些任务。

如何在spring-boot中找出默认的计划任务的默认池大小?

原因:以下类不并行执行作业,而是一个接一个地执行。 也许默认情况下只配置一个线程执行程序?

 @Service public class ZipFileTesterAsync { @Scheduled(fixedDelay = 60000, initialDelay = 500) public void run() throws Exception { System.out.println("import 1"); TimeUnit.MINUTES.sleep(1); System.out.println("import 1 finished"); } @Scheduled(fixedDelay = 60000, initialDelay = 1000) public void run2() throws Exception { System.out.println("import 2"); TimeUnit.MINUTES.sleep(1); } } 

结果:第一个完成后执行第二个作业。

是的,默认情况下,所有@Scheduled方法共享一个线程。 可以通过定义@Configuration来覆盖此行为,例如:

 @Configuration public class SchedulingConfigurerConfiguration implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.setPoolSize(100); taskScheduler.initialize(); taskRegistrar.setTaskScheduler(taskScheduler); } } 

此示例确保所有@Scheduled方法共享大小为100的线程池。