首页 > 其他分享 >springboot 默认配置的线程池

springboot 默认配置的线程池

时间:2023-06-21 15:44:35浏览次数:65  
标签:springboot 17 默认 任务 线程 定时 SpringBoot

 

线程池的大小通常都是我们比较关注的,SpringBoot 会为系统做默认配置。如果不清楚 SpringBoot 默认配置的线程池的大小的话,容易线上踩坑。

最近碰到一个生产问题,线上部署 6 台机器,定时任务A,B都在 17:00 执行,执行时会各自先获取分布式锁。(服务器时间是一致的)
理论上是可以做到同一时刻只有一台机器能够执行的,但实际情况是,定时任务 B 有的在 17:00.000 触发,有的机器上是 17:00.230 触发,有的机器上是 17:01.000 触发。

通过日志发现,晚触发的定时任务B都是在上一个定时任务A 执行完成之后,再执行的。而且执行的线程名都是 scheduling-1。
所以,猜想线程池可能只有一个,任务出现了等待,导致任务没有在准点触发。

 

查看源码发现,SpringBoot 默认配置的定时任务线程池中线程数是 1 个。

可能通过配置: spring.task.scheduling.pool.size=10   来设置线程池个数。也可以通过 TaskSchedulerCustomizer 来进行定制。

 

@Async 异步任务,SpringBoot 也是会进行线程池的默认配置的,默认设置的线程数是 8 个,taskQueue 的大小是无界(queueCapacity = Integer.MAX_VALUE),线程名前缀是 : task-

 

 

标签:springboot,17,默认,任务,线程,定时,SpringBoot
From: https://www.cnblogs.com/kevin-yuan/p/17496374.html

相关文章

  • springboot集成easyexcel实现导入导出
    1、添加依赖<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.5</version></dependency>2、controller/***基于Liste......
  • springboot简单依赖
    <?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/......
  • springboot启动流程 (3) 自动装配
    在SpringBoot中,EnableAutoConfiguration注解用于开启自动装配功能。本文将详细分析该注解的工作流程。EnableAutoConfiguration注解启用SpringBoot自动装配功能,尝试猜测和配置可能需要的组件Bean。自动装配类通常是根据类路径和定义的Bean来应用的。例如,如果类路径上有tomcat-......
  • Jenkins部署前后端不分离springboot项目
    背景写这篇博客的时候我还是大学生,学校期末课程设计时要求使用Jenkins部署项目,所以使用windows,但是企业中都是使用linux,往往还会搭建一个gitlab。下面我介绍的是在window环境下使用jenkins部署项目,这阵子搞这个期末作业时感觉收获还是挺大的,专门记录下。持续集成(CI)持续集成......
  • Springboot api的controller如何接口一个List<Object>参数
    1.正常情况下,你可能会这样写:@PostMapping("/delete")@ApiOperation("Deletelistdata")@ResponseStatus(HttpStatus.OK)@ResponseBodypublicDBUpdateStatusdeleteTestCaseDatas(List<TestCaseInfo>testCaseInfoList){......
  • Springboot 框架中的Entity,Dao,Service,Controller的关系
    SpringBoot框架中的Entity,DAO,Service,Controller层的关系参考:https://blog.csdn.net/weixin_44532671/article/details/117914161https://blog.csdn.net/m0_47552180/article/details/125613332......
  • 【后端面经-java】java线程池满的处理策略
    目录1.线程池介绍1.1基本作用1.2处理流程1.3线程池大小设置1.4线程池参数2.线程池满的处理策略2.1默认--拒绝策略handler3.参考资料1.线程池介绍1.1基本作用对多个线程使用的资源进行集中管理。降低资源消耗:复用线程,降低线程创建和销毁造成的消耗;线程资源管理......
  • SpringBoot之MVC配置(WebMvcConfigurer详解)
    一:基本介绍SpringMVC是一种常用的JavaWeb框架,它提供了一种基于MVC模式的开发方式,可以方便地实现Web应用程序。在SpringMVC中,WebMvcConfigurer是一种常用的配置方式,可以允许我们自定义SpringMVC的行为,比如添加拦截器、消息转换器等。在本文中,我们将介绍什么是WebMvcConfi......
  • Springboot03
    1.Springboot引入JSPspring官网说,不建议springboot使用jspspring默认值支持Thymeleaf、FreeMarker·、Velocity·、GroovyJSP1.1.引入jsp相关的依赖<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId>&l......
  • 如何获取多线程执行的返回值,多线程的第三种实现方式。
    多线程的第三种实现方式主要有以下步骤。1、创建一个类#MyCallable实现Callable接口。在泛型中指定多线程执行后要返回的数据类型2、在MyCallable方法种重写call方法,此方法的内容,便是多线程的执行内容。类似于run方法。3、将MyCallable对象实例化。4、创建FutureTask<Integer>......