这是我参与8月更文挑战的第20天,活动详情查看:8月更文挑战
@Scheduled是Spring框架里面实现定时任务的注解,包括很多特定的参数,如Cron表达式、fixedDelay、fixedDelayString、fixedRate、initialDelay等等。
在需要定时执行的方法前面加上该注解,注解@Scheduled作为一个触发源添加到方法中。
@Scheduled
fixedDelay
以下的方法将以一个固定延迟时间5秒钟调用一次执行,这个周期是以上一个调用任务的完成时间为基准,在上一个任务完成之后,5s后再次执行:
@Scheduled(fixedDelay = 5000)
public void JobDemo() {
try {
log.info("任务开始执行............");
} catch (Exception e) {
log.error("任务执行失败");
}
}
fixedRate
如果需要以固定速率执行,只要将注解中指定的属性名称改成fixedRate即可,以下方法将以一个固定速率5s来调用一次执行,这个周期是以上一个任务开始时间为基准,从上一任务开始执行后5s再次调用:
@Scheduled(fixedRate = 5000)
public void JobDemo() {
try {
log.info("任务开始执行............");
} catch (Exception e) {
log.error("任务执行失败");
}
}
initialDelay
第一次延迟多长时间后再执行,例如下面这个就是第一次延迟1秒后执行,接下来都是5s后执行。
@Scheduled(fixedDelay = 5000, initialDelay = 1000)
public void JobDemo() {
try {
log.info("任务开始执行............");
} catch (Exception e) {
log.error("任务执行失败");
}
}
Cron表达式
由左到右的含义依次为:
秒(0~59)
分(0~59)
小时(0~23)
日(月)(0~31,注意使用到的月的天数)
月(0~11)
天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
年份(1970-2099)。
每一项有多个时用逗号隔开,不考虑的话用*号代替,即“ * ”字符代表所有值都可能。
例如:(从右往左看)
"0 0 12 * * ?" 每天中午12:00:00触发
"0 15 10 * * ? *" 每天上午10:15:00触发
"0 30 12 ? * 5L" 每月的最后一个星期四上午12:30:00触发。
L是last的缩写,代表最后,仅用在天(星期)和天(月)上面。 在L前由参数时,代表其他含义。
如6L,在天(星期)表示最后一个星期五。在天(月)表示最后倒数第6天。
现在网上转换工具也很多,感兴趣的话可以在网上好好学习一下。