当前位置: 首页 > news >正文

一个服务中多个@Scheduled注解的定时任务并发执行的问题

先介绍下历史背景

一个服务中有多个@Scheduled(cron=‘xxxxx’)的都是任务,并且这些任务的间隔时间都非常短,例如并行有5个任务 每个任务的执行间隔都是30秒钟,这些任务都是这个服务的基础数据缓存功能

事由

当我准备再添加一个比较重要的定时任务并配置@Scheduled(cron=" 0 0 3 * * ? ")时 ,第二天发现任务并没有被执行。
经过调试发现,我的这些定时任务已串行的方式在执行,当我给每个任务配置@Async注解发现也并不起作用,依旧是串行运行,并且因为最开始的5个基础任务执行间隔短且任务执行时间比较长,导致我新配置的这个凌晨3点的任务在每天都存在了未被触发的情况(有时候回触发成功)
后发现在一个服务中 ,配置的scheduled任务都是单线程池的,需要通过配置scheduled的线程池来扩容

具体配置如下

/*** 配置定时任务线程池为10,最多同时执行10个*/
@Configuration
@EnableScheduling
public class SchedulerConfig implements SchedulingConfigurer {@Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegistrar) {taskRegistrar.setScheduler(Executors.newScheduledThreadPool(10));}
}

通过这样配置后在测试,发现我的所有Scheduled的定时任务都可以并行执行了


http://www.mrgr.cn/news/52002.html

相关文章:

  • LVGL-从入门到熟练使用
  • Langchain框架中的agents库的功能和用法,包括详细介绍和代码样例实操
  • 二叉树遍历小解
  • 视频怎么压缩大小?免费视频压缩软件,让视频处理更便捷
  • 2024年工信部大数据分析师报考条件及就业方向是怎样的
  • 新能源行业必会基础知识---电力现货问答---第5问---何为电力中长期市场?与电力现货市场之间有何关系?国内试点地区如何衔接?国外有哪些经验值得借鉴?
  • 显示指定目录下的 .c 文件 Linux环境 C语言实现
  • 动态规划最后专题训练
  • 入门案例解析-基因组组装
  • 民事诉讼中的司法鉴定常见问题
  • 数据库连接池:从JDBC到高效管理的演进
  • 【0340】Postgres内核 read XLOG record (2 - 1)
  • 2024年10款常用图纸加密软件推荐|超好用的图纸加密方法
  • Python 生成随机数 random、user-agent 伪装、随机时间请求
  • Tailwind css系列教程(一)
  • 状态设计模式
  • 30道渗透测试面试题,助你通过面试!零基础入门到精通,收藏这篇就够了
  • 8.扩散模型的未来---GPT及大模型(3)完结
  • 三维指纹定位系统(MATLAB,三维空间的定位,四个锚点)
  • 企业微信开放平台注册流程