spring-boot中默认的调度程序池大小是多少?
我正在使用spring-boo
t和@Scheduled
注释执行一些任务。
如何确定spring-boot中预设任务的默认池大小是多少?
原因:以下类不是并行执行作业,而是一个接一个地执行。也许默认情况下仅配置了一个线程执行程序?
@Servicepublic 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
如下这样可以覆盖此行为:
@Configurationpublic 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