@Scheduled同步多线程配置
背景
公司的老项目,由于开启了多个@Scheduled任务。却发现每个@Scheduled是总体顺序执行的。没有按照预期来跑。通过review代码后发现,@Scheduled的使用有些问题。是由于@Scheduled默认为所有的Scheduled共用一个线程导致。
开启多线程配置
注意,由于想让每一个任务都起一条线程去执行,要求必须每个执行完毕后才能再次执行,所以不能开启异步执行。不能添加@EnableAsync。
ScheduleConfig.java
@Configuration
@EnableScheduling
public class ScheduleConfig implements SchedulingConfigurer {@Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegistrar) {taskRegistrar.setScheduler(taskExecutor());}@Bean(destroyMethod="shutdown")public Executor taskExecutor() {return Executors.newScheduledThreadPool(10); //指定Scheduled线程池大小}
}
业务代码中增加@Scheduled
在指定的任务方法上面增加注解:
@Scheduled(fixedDelay = 3000)//不能开启异步,待上一条任务执行完毕后,休息3秒后执行public void scheduled1() {log.info("我是业务处理逻辑1");Thread.sleep(5000);}@Scheduled(fixedDelay = 3000)public void scheduled2() {log.info("我是业务处理逻辑2");Thread.sleep(5000);}@Scheduled(fixedDelay = 3000)public void scheduled3() {log.info("我是业务处理逻辑3");Thread.sleep(5000);}
fixedRate,fixedDelay,cron
fixedRate:每隔X秒执行一次。
fixedDelay:每次任务执行完之后的X秒后,再次执行。
cron:定时任务。
结果
由于线程池设置了10个线程并行执行,就会看到同时有三个任务在跑,由于没有开启异步,而fixedDelay 设置了任务执行完成之后3秒后再次执行,所以这三个任务会每隔8秒后分别再次执行。
@Scheduled同步多线程配置相关推荐
- Spring @Scheduled 多线程配置
Spring @Scheduled 多线程配置 环境 SpringBoot 2.0.2.RELEASE JDK8 两种方式实现 1.@Scheduled+@Async 测试代码: @SpringBoo ...
- amd同步多线程_AMD下一代锐龙APU实锤!Zen3、RDNA2绝配
AMD Renoir锐龙4000U/H APU处理器可以说是近些年来最完美的产品之一,全新的7nm工艺和Zen 2架构,最多8核心16线程,热设计功耗覆盖15-45W,无论性能还是续航表现都近乎无可挑 ...
- Spring定时任务-多线程配置
目前常见的定时任务框架有Quarts.Elastic-Job.xxl-job等.但其实SpringBoot也有一个内置的定时任务框架,不需要引入额外的Jar,使用Spring自带的注解就可以,比Qua ...
- amd同步多线程_AMD发布锐龙3 3300X/3100:首次实现同步多线程
4月21日晚,AMD正式发布了第三代锐龙3系列处理器,这也是继线程撕裂者.锐龙9/7/5系列之后,7nm工艺.Zen2架构首次来到入门级市场.第三代锐龙3包括锐龙3 3300X.锐龙3 3100两款型 ...
- amd同步多线程_首次同步多线程!AMD第三代锐龙3 3300X/3100上市:4核心8线程、PCIe 4加持...
4月21日晚,AMD正式发布了第三代锐龙3系列处理器,这也是继线程撕裂者.锐龙9/7/5系列之后,7nm工艺.Zen2架构首次来到入门级市场. 第三代锐龙3包括锐龙3 3300X.锐龙3 3100两款 ...
- Spring定时任务@Scheduled注解使用配置方式(cron表达式、fixedRate和fixedDelay)
Spring定时任务@Scheduled注解使用配置方式(cron表达式.fixedRate和fixedDelay) 序言: 个人推荐一个很方便的在线Cron生成器(网页版):https://qqe2 ...
- centos 多台 文件夹同步_CentOS7配置rsync实现文件同步
rsync(remote synchronize )是一个远程文件同步工具,支持多个操作系统,用于在多台服务器之间同步目录和文件.rsync采用增量传输文件的方法,只传输新文件和修改过的文件,而不是每 ...
- C#中使用Monitor类、Lock和Mutex类来同步多线程的执行(转)
C#中使用Monitor类.Lock和Mutex类来同步多线程的执行 在多线程中,为了使数据保持一致性必须要对数据或是访问数据的函数加锁,在数据库中这是很常见的,但是在程序中由于大部分都是单线程的程序 ...
- amd同步多线程_使用方法及感受_AMD Ryzen Threadripper 1950X_CPUCPU评测-中关村在线
结构分析 AMD 锐龙 Threadripper 处理器依然采用ZEN CCX结构,每片CPU晶粒(Die)中拥有两个CCX(CPU Complex),每个CCX里有四颗处理核心,通过SMT同步多线程 ...
最新文章
- 【PHPWord】页面添加图片水印
- LeetCode 59 _ Sprial Matrix II 旋转矩阵2
- WP7 WMAppManifest.xml各个属性作用
- java面试题二十七 多线程考题2
- freebsd镜像作用和vmware服务开启
- PHP文件加到WordPress页面,WordPress-所有页面链接到index.php文件
- Spyder里面好像不能用汉字
- HDU 1269 裸奔的强联通分量
- web前端数据可视化框架汇总
- Excel4.0宏病毒查看隐藏宏代码
- 实现收藏本站和设为首页功能
- 1、spring之Resource加载
- 0xFEFEFEFE 处有未经处理的异常(在xx中): 0xC00001A5: 检测到无效的异常处理程序例程。
- 如何解决ssh断开/关闭之后python程序自动中止
- 七牛云 Bucket是什么?怎么取得
- 计算机主机的是指什么,电脑基本操作包括哪些 电脑的基本的操作是指什么
- 未来智能手机摄像技术发展趋势:应用
- 【转】Ubuntu18将Launcher(启动栏/任务栏)移到屏幕下方
- 手写识别ocr java,怎么识别手写文字?迅捷OCR文字识别软件帮你快速完成!
- day14 Map集合
热门文章
- 【MAC】有道笔记登陆不了,刷新不出登陆
- 台式计算机用什么电源线,台式机电源怎么选 台式机主机电源如何选择【详解】...
- Photoshop设计中用羽化消除边缘锯齿
- ​基于光通信的6G水下信道建模综述
- 计算机网络辩论赛主持词,辩论赛主持词(精选)
- Cubase中文版教程:如何通过音频剪辑软件创建工程
- vray渲染出图尺寸_3DMax渲染出图尺寸怎么设置?
- CAD制图教程:CAD软件中怎么画圆弧梯段?
- 如何在充满不确定性的当下探索未来?
- python转行成数据分析_大数据专业成热门,该如何转行做大数据分析师