Spring Boot多个定时任务阻塞问题的解决方法是什么
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,Spring Boot多个定时任务阻塞问题的解决方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。前言今天介绍一下
千家信息网最后更新 2025年11月08日Spring Boot多个定时任务阻塞问题的解决方法是什么
Spring Boot多个定时任务阻塞问题的解决方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
前言
今天介绍一下Spring Boot 中 如何开启多线程定时任务?
为什么Spring Boot 定时任务是单线程的?
想要解释为什么,一定要从源码入手,直接从@EnableScheduling这个注解入手,找到了这个ScheduledTaskRegistrar类,其中有一段代码如下:
protected void scheduleTasks() { if (this.taskScheduler == null) { this.localExecutor = Executors.newSingleThreadScheduledExecutor(); this.taskScheduler = new ConcurrentTaskScheduler(this.localExecutor); }}如果taskScheduler为null,则创建单线程的线程池:Executors.newSingleThreadScheduledExecutor()。
多线程定时任务如何配置?
下面介绍三种方案配置多线程下的定时任务。
1、重写SchedulingConfigurer#configureTasks()
直接实现SchedulingConfigurer这个接口,设置taskScheduler,代码如下:
@Configurationpublic class ScheduleConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { //设定一个长度10的定时任务线程池 taskRegistrar.setScheduler(Executors.newScheduledThreadPool(10)); }}2、通过配置开启
Spring Boot quartz 已经提供了一个配置用来配置线程池的大小,如下;
spring.task.scheduling.pool.size=10
只需要在配置文件中添加如上的配置即可生效!
3、结合@Async
@Async这个注解都用过,用来开启异步任务的,使用@Async这个注解之前一定是要先配置线程池的,配置如下:
@Bean public ThreadPoolTaskExecutor taskExecutor() { ThreadPoolTaskExecutor poolTaskExecutor = new ThreadPoolTaskExecutor(); poolTaskExecutor.setCorePoolSize(4); poolTaskExecutor.setMaxPoolSize(6); // 设置线程活跃时间(秒) poolTaskExecutor.setKeepAliveSeconds(120); // 设置队列容量 poolTaskExecutor.setQueueCapacity(40); poolTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); // 等待所有任务结束后再关闭线程池 poolTaskExecutor.setWaitForTasksToCompleteOnShutdown(true); return poolTaskExecutor; }然后在@Scheduled方法上标注@Async这个注解即可实现多线程定时任务,代码如下:
@Async @Scheduled(cron = "0/2 * * * * ? ") public void test2() { System.out.println("..................执行test2................."); }看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
线程
任务
配置
注解
代码
方法
帮助
多个
问题
阻塞
清楚
内容
前言
大小
如上
容量
对此
接口
文件
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
查询有关数据库的全部图书信息
合肥门店管理软件开发定制
软件开发文科大学排名
主流的软件开发模式
2019网络安全攻防演练
百威网络技术有限公司怎么样
联想手机自动关机后无服务器
软件开发用什么软件的
数据库外模式可以有几种
新华互联网科技系列就业
武汉雅淘网络技术公司贴吧
虚拟服务器的管理方法
学网络安全c语言好吗
怀旧服同区不同服务器能卖吗
医学信息数据库的安全
确保军事信息网络安全对策
晋城网络安全工作会议
徽师教育网络安全课
山东康健网络技术有限公司
逆战测试服连接服务器登录不进去
服务ftp服务器
阿里云服务器销售额
医院如何保障网络安全
宇泰串口服务器5508
充燃气显示服务器异常
数据库查询一周内的数据
杭州施工管理软件开发
滕州国家网络安全宣传
cms32软件开发
服务器机箱有辐射吗