背景

公司的老项目,由于开启了多个@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同步多线程配置相关推荐

  1. Spring @Scheduled 多线程配置

    Spring @Scheduled 多线程配置 环境 SpringBoot 2.0.2.RELEASE JDK8 两种方式实现 1.@Scheduled+@Async 测试代码: @SpringBoo ...

  2. amd同步多线程_AMD下一代锐龙APU实锤!Zen3、RDNA2绝配

    AMD Renoir锐龙4000U/H APU处理器可以说是近些年来最完美的产品之一,全新的7nm工艺和Zen 2架构,最多8核心16线程,热设计功耗覆盖15-45W,无论性能还是续航表现都近乎无可挑 ...

  3. Spring定时任务-多线程配置

    目前常见的定时任务框架有Quarts.Elastic-Job.xxl-job等.但其实SpringBoot也有一个内置的定时任务框架,不需要引入额外的Jar,使用Spring自带的注解就可以,比Qua ...

  4. amd同步多线程_AMD发布锐龙3 3300X/3100:首次实现同步多线程

    4月21日晚,AMD正式发布了第三代锐龙3系列处理器,这也是继线程撕裂者.锐龙9/7/5系列之后,7nm工艺.Zen2架构首次来到入门级市场.第三代锐龙3包括锐龙3 3300X.锐龙3 3100两款型 ...

  5. amd同步多线程_首次同步多线程!AMD第三代锐龙3 3300X/3100上市:4核心8线程、PCIe 4加持...

    4月21日晚,AMD正式发布了第三代锐龙3系列处理器,这也是继线程撕裂者.锐龙9/7/5系列之后,7nm工艺.Zen2架构首次来到入门级市场. 第三代锐龙3包括锐龙3 3300X.锐龙3 3100两款 ...

  6. Spring定时任务@Scheduled注解使用配置方式(cron表达式、fixedRate和fixedDelay)

    Spring定时任务@Scheduled注解使用配置方式(cron表达式.fixedRate和fixedDelay) 序言: 个人推荐一个很方便的在线Cron生成器(网页版):https://qqe2 ...

  7. centos 多台 文件夹同步_CentOS7配置rsync实现文件同步

    rsync(remote synchronize )是一个远程文件同步工具,支持多个操作系统,用于在多台服务器之间同步目录和文件.rsync采用增量传输文件的方法,只传输新文件和修改过的文件,而不是每 ...

  8. C#中使用Monitor类、Lock和Mutex类来同步多线程的执行(转)

    C#中使用Monitor类.Lock和Mutex类来同步多线程的执行 在多线程中,为了使数据保持一致性必须要对数据或是访问数据的函数加锁,在数据库中这是很常见的,但是在程序中由于大部分都是单线程的程序 ...

  9. amd同步多线程_使用方法及感受_AMD Ryzen Threadripper 1950X_CPUCPU评测-中关村在线

    结构分析 AMD 锐龙 Threadripper 处理器依然采用ZEN CCX结构,每片CPU晶粒(Die)中拥有两个CCX(CPU Complex),每个CCX里有四颗处理核心,通过SMT同步多线程 ...

最新文章

  1. 【PHPWord】页面添加图片水印
  2. LeetCode 59 _ Sprial Matrix II 旋转矩阵2
  3. WP7 WMAppManifest.xml各个属性作用
  4. java面试题二十七 多线程考题2
  5. freebsd镜像作用和vmware服务开启
  6. PHP文件加到WordPress页面,WordPress-所有页面链接到index.php文件
  7. Spyder里面好像不能用汉字
  8. HDU 1269 裸奔的强联通分量
  9. web前端数据可视化框架汇总
  10. Excel4.0宏病毒查看隐藏宏代码
  11. 实现收藏本站和设为首页功能
  12. 1、spring之Resource加载
  13. 0xFEFEFEFE 处有未经处理的异常(在xx中): 0xC00001A5: 检测到无效的异常处理程序例程。
  14. 如何解决ssh断开/关闭之后python程序自动中止
  15. 七牛云 Bucket是什么?怎么取得
  16. 计算机主机的是指什么,电脑基本操作包括哪些 电脑的基本的操作是指什么
  17. 未来智能手机摄像技术发展趋势:应用
  18. 【转】Ubuntu18将Launcher(启动栏/任务栏)移到屏幕下方
  19. 手写识别ocr java,怎么识别手写文字?迅捷OCR文字识别软件帮你快速完成!
  20. day14 Map集合

热门文章

  1. 【MAC】有道笔记登陆不了,刷新不出登陆
  2. 台式计算机用什么电源线,台式机电源怎么选 台式机主机电源如何选择【详解】...
  3. Photoshop设计中用羽化消除边缘锯齿
  4. ​基于光通信的6G水下信道建模综述
  5. 计算机网络辩论赛主持词,辩论赛主持词(精选)
  6. Cubase中文版教程:如何通过音频剪辑软件创建工程
  7. vray渲染出图尺寸_3DMax渲染出图尺寸怎么设置?
  8. CAD制图教程:CAD软件中怎么画圆弧梯段?
  9. 如何在充满不确定性的当下探索未来?
  10. python转行成数据分析_大数据专业成热门,该如何转行做大数据分析师