【Java】@Scheduled常用的注解的使用

@Scheduled注解的使用

cron

cron这个参数必须要接受一个cron表达式

cron表达式是个啥呢,Cron表达式是一个具有时间含义的字符串,字符串以5个空格隔开,分为6个域,格式为 X X X X X X 。 其中 X 是一个域的占位符。单个域有多个取值时,使用半角逗号, 隔开取值。 每个域可以是确定的取值,也可以是具有逻辑意义的特殊字符

 //这个就是在每次凌晨1点的时候执行
@Scheduled(cron = "0 0 1 * * ?")

cron表达式语法自行百度,应该很多

或者找个网站,像是这个https://cron.qqe2.com/

fixedDelay

简单来说,就是在上一次执行完以后再过一个参数的时间以后再次执行,它的间隔时间是根据上次的任务结束的时候开始计时的

 //这个就是在上一次执行完以后再过半个小时再次执行
@Scheduled(fixedDelay = 30 * 60 *1000)

像上面的就是,当这个方法在一次执行结束后,开始进行时间的计算,然后再计算时间达到半个小时的时候,就开始再次执行该方法

fixedRate

这个和fixedDelay类似,但又不是一样的,它的间隔时间是根据上次任务开始的时候计时的

 //这个就是在上一次开始的时间点以后数半个小时再次执行
@Scheduled(fixedRate = 30 * 60 *1000)

比如说,一个方法上设置了fiexdRate = 30 * 60 *1000,那么在执行这个方法的时候,假如说这个方法执行了十分钟,那么下次执行这个方法就是在这个方法结束之后的二十分钟后再次执行,而不是说半个小时

不过这个有的时候会堵塞,如果前一个没有执行完,后一个就已经开始了,那么就是堵塞,慢慢的就堵了,走一个下一个接着执行,不会在此等待了

initialDelay

简单来说,作用就是在一个延迟执行的操作,先延迟一段时间以后再进行定时操作

//在第一次的时候首先延迟10秒,然后再执行,执行完第一次以后就开始之后按fixedRate的规则进行定时操作,每15秒执行一次
@Scheduled(initialDelay=10000, fixedRate=15000) 
您能读到这儿,我呢是发自真心的感谢您,若要转载,还望请您带上链接
原文地址:https://www.cnblogs.com/jokingremarks/p/15076173.html