其他分享
首页 > 其他分享> > Spring中@Async和FixedDelay共同使用

Spring中@Async和FixedDelay共同使用

作者:互联网

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

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

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

标签:FixedDelay,Spring,开启,fixedRate,任务,线程,Async,时间,fixedDelay
来源: https://www.cnblogs.com/supertan/p/12192378.html