关于@Scheduled中fixedDelay、fixedRate理解

更新时间:2023-08-08 04:02:07 阅读: 评论:0

关于@Scheduled中fixedDelay、fixedRate理解梦见刷碗
场景描述:
四个自信在服务器上出现了⼀些不太合理数据,数据处理采⽤的是定时任务(@Scheduled中fixedDelay属性),⼀开始对fixedDelay的理解就是:上次任务执⾏完毕后,然后间隔配置的时间才会执⾏下⼀次任务。
fixedDelay多线程处理:
场景⼀:假设⾜够的线程在相隔的时间内能够处理完任务
场景⼀结果:在线程池线程数在相隔时间内⾜够执⾏任务,下⼀次任务的启动时间就是配置的间隔时间。
莴笋功效
场景⼆:在多线程环境下,如果需要处理的数据⽐较多,⼀开始的理解,就算需要处理的数据再多,那么下⼀次任务的执⾏也是在当前任务执⾏完毕后才会开始启动,然⽽并⾮如此,代码块如下所⽰:
场景⼆结果:在每⼀个任务中,线程睡眠五秒钟,得出的结果是下⼀个任务的启动还是fixedDelay配置的时间,如果上⼀次任务没有执⾏完毕,下次任务如果启动也不会执⾏对应的任务,⽽是需要等待上⼀次任务真正执⾏完毕才会执⾏。
fixedRate多线程处理:
场景⼀:如果两个任务相隔的时间⾜够长,线程能充分的处理完这些数据:邑邑
场景⼀结果:还是相隔配置的时间执⾏下⼀次任务
场景⼆:假设在相隔的时间内不能处理完任务;到了相隔的时间下⼀个任务还是会启动,但会被阻塞到上⼀个任务执⾏完毕才会执⾏当前这个任务。
种蒜日记
fixedRate单线程处理:
fixedRate代码块如下所⽰:
fixedRate结果:如果任务的处理时间⼤于fixedRate配置的时间,那么当任务结束的时候则会⽴马执⾏。如果是在相隔的时间段内处理完毕,假设设置的是5s,任务花了3s执⾏完毕,那么在2s后则会执⾏下⼀个任务。
烤米饼
fixedDelay单线程处理:男生肚子疼
fixedDelay代码块如下所⽰:
fixedDelay结果:如果设定的是相隔5s执⾏,当前任务假设需要花费8s,那么下⼀次的执⾏的时间为当前任务执⾏完毕后,相隔5s后再执⾏。
如何验证多线程任务执⾏完毕?
1、可以采⽤isTerminated()⽅法检测多线程是否执⾏完毕。
举报公司偷税漏税需要什么证据2、可以采⽤CountDownLatch的await()⽅法实现。

本文发布于:2023-08-08 04:02:07,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1127868.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:任务   时间   需要   相隔   处理   完毕   结果
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图