一、定时任务
1、开启支持,在启动类上面加个注解:@EnableScheduling
@SpringBootApplication
@EnableScheduling
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
2、代码示例
@Component
public class ScheduleTask {
//间隔执行
@Scheduled(fixedRate = 5000)
public void testCurrentTime() {
System.out.println("每隔五秒钟执行一次: " + new Date());
}
//定时执行
@Scheduled(cron = "0 0 19 ? * *")
public void fixTimeExecution() {
System.out.println("在指定时间 " + new Date() + "执行");
}
}
执行效果
每隔五秒钟执行一次: Fri Aug 30 17:17:00 CST 2019
每隔五秒钟执行一次: Fri Aug 30 17:17:05 CST 2019
每隔五秒钟执行一次: Fri Aug 30 17:17:10 CST 2019
每隔五秒钟执行一次: Fri Aug 30 17:17:15 CST 2019
每隔五秒钟执行一次: Fri Aug 30 17:17:20 CST 2019
每隔五秒钟执行一次: Fri Aug 30 17:17:25 CST 2019
每隔五秒钟执行一次: Fri Aug 30 17:17:30 CST 2019
...
在指定时间 Fri Aug 30 19:00:00 CST 2019执行
二、cron
cron表达式语法:[秒] [分] [小时] [日] [月] [周] [年]([年]不是必须的域)
第一位,表示秒,取值 0-59
第二位,表示分,取值 0-59
第三位,表示小时,取值 0-23
第四位,日期,取值 1-31
第五位,月份,取值 1-12
第六位,星期几,取值 1-7
第七位,年份,可以留空,取值 1970-2099
(*) 星号:可以理解为“每”的意思,每秒、没分
(?) 问好:只能出现在日期和星期这两个位置,表示这个位置的值不确定
(-) 表达一个范围,如在小时字段中使用 10-12 ,表示从10点到12点
(,) 逗号,表达一个列表值,如在星期字段中使用 1,2,4 ,则表示星期一、星期二、星期四
(/) 斜杠,如 x/y ,x是开始值,y是步长,如在第一位(秒)使用 0/15,表示从0秒开始,每15秒
三、参数详解
@Scheduled(fixedDelay = 5000) //上一次执行完毕时间点之后5秒再执行
@Scheduled(fixedDelayString = “5000”) //上一次执行完毕时间点之后5秒再执行
fixedDelayString与fixedDelay 意思相同,只是使用字符串的形式。唯一不同的是支持占位符
@Scheduled(fixedRate = 5000) //上一次开始执行时间点之后5秒再执行
@Scheduled(fixedRateString = “5000”) //上一次开始执行时间点之后5秒再执行
fixedRateString与fixedRate 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。
@Scheduled(initialDelay=1000, fixedRate=5000) //第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次
initialDelayString与initialDelay 意思相同,只是使用字符串的形式。唯一不同的是支持占位符。
https://www.jianshu.com/p/1defb0f22ed1