当前位置: 首页 > 面试题库 >

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

齐建安
2023-03-14
问题内容

我正在使用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应用程序中或一般情况下,tomcat是否配置了默认线程池? 如果配置了线程池,当容器从池中挑选线程时,特定的线程将服务于许多请求?

  • 当容器加载时,spring boot HikariCP提供的默认连接池大小是多少? 当然,我使用下面的属性来设置最大cp大小,但是我想知道如果我们在application.properties文件中没有给出任何数字,默认的cp大小是多少。 如果我给出application.properties最大池大小为100,而我只使用20,这会影响我的应用程序性能吗?

  • 问题内容: 由于以下原因,我知道如何设置堆栈大小: 如何在Node.js中增加最大调用堆栈大小 但是,默认大小是多少?(即,我如何获得的PHP等效项) 问题答案: 简单的答案是,默认堆栈大小为492 KB(32位)和984KB(64位)。 如soyuka所评论,请尝试以下操作: 要么

  • 我正在运行Spring boot 1.4.3应用程序。我正在使用连接到SQL服务器数据库。 当我打印出jdbc模板和驱动程序的默认获取大小时,我得到不同的值。 这就是我从jdbc模板中获取获取大小的方式 几个问题 > 为什么jdbcTemplate提取大小为-1,而文档显示默认值为零。 在上面的例子中,当一个语句执行时,实际的获取大小是多少。我的< code>select语句出现OOM内存错误,我

  • 我使用SpringBoot(V2.3.0.Release)、JPA和Hibernate(带有MySQL数据库)。总的来说,我需要努力提高表演。 是否需要手动配置(同时添加依赖项)连接池?