码迷,mamicode.com
首页 > 编程语言 > 详细

Spring中@Async和FixedDelay共同使用

时间:2020-01-14 16:21:19      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:任务   led   scheduled   增加   fixed   操作   ast   lock   完成   

1.两个注解同时存在:@Async表示异步执行,@Scheduled(fixedDelay=1000*2*1)表示两次任务的间隔时间为2秒,当线程异步执行且用时较长时,任务会一直开启线程而导致fixedDelay失效,此时fixedDelay和fixedRate都是表示两个线程间隔开启的时间。即不管锁没锁住,都会到时间尝试开启。

2.无@Async,用同一个线程去执行任务,且执行时间只跟任务时间有关,只有任务完成后,才会执行下一次操作,如果任务时间小于fixedRate时间,会等到fixedRate的时间再开启下一个。如果任务时间大于fixedRate时间,则以任务时间为准。fixedDelay会影响两次任务的间隔时间。

3.增加了@SchedulerLock锁之后lockAtMostForString的时间,若任务执行时间小于最大时间lockArMostForString,则在任务结束后间隔fixedDelay时间后开启下一个线程。若线程任务时间大于lockAtMostForString时间,则会导致任务未执行完毕又开启下一个线程任务。lockAtLeastForString表示最少锁定多长时间。

Spring中@Async和FixedDelay共同使用

标签:任务   led   scheduled   增加   fixed   操作   ast   lock   完成   

原文地址:https://www.cnblogs.com/supertan/p/12192378.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!