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的线程池。

以上是 spring-boot中默认的调度程序池大小是多少? 的全部内容, 来源链接: utcz.com/qa/428740.html

回到顶部