import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class TimerDemoApplication {
public static void main(String[] args) {
SpringApplication.run(TimerDemoApplication.class, args);
}
}
创建一个定时任务时,在无返回值无参数方法上加@Scheduled注解,表示该方法根据注解的规则定时执行
@Scheduled(cron = "0 0 2 * * ? ")
public void timerDemo() {
}
# Spring配置信息
spring:
# task相关配置
task:
scheduling:
# 任务调度线程池大小,默认1
pool:
size: 1
# 调度线程名称前缀,默认scheduling
thread-name-prefix: read_from_xml
shutdown:
# 线程池关闭时等待所有任务完成
await-termination: false
# 线程池关闭时等待所有任务完成的最长时间,单位毫秒,默认-1
await-termination-period: 30000
(1)cron方式
@Scheduled(cron = "0 0 0 * * ? ")
该参数接收一个cron表达式,cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域,每一个域代表一个含义
(2)固定速率
initialDelay:第一次延迟多长时间后再执行
initialDelayString:与 initialDelay 意思相同,只是使用字符串的形式,唯一不同的是支持占位符
fixedDelay:上一次执行完毕时间点之后多长时间再执行
fixedDelayString:与 fixedDelay 意思相同,只是使用字符串的形式,唯一不同的是支持占位符
//单位毫秒
//@Scheduled(initialDelay = 5000, fixedDelayString = "2000")
@Scheduled(initialDelay = 5000, fixedDelay = 2000)
(3)固定延时
initialDelay:第一次延迟多长时间后再执行
initialDelayString:与 initialDelay 意思相同,只是使用字符串的形式,唯一不同的是支持占位符
fixedRate:上一次开始执行时间点之后多长时间再执行
fixedRateString:与 fixedRate 意思相同,只是使用字符串的形式,唯一不同的是支持占位符
//单位毫秒
@Scheduled(initialDelay = 5000, fixedRate = 2000)
cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域,每一个域代表一个含义
//[年]不是必须的域,可以省略[年]
[秒] [分] [小时] [日] [月] [周] [年]
域 | 是否必填 | 值范围 | 可以使用的通配符 |
---|---|---|---|
秒 | 是 | 0-59 | , - * / |
分 | 是 | 0-59 | , - * / |
小时 | 是 | 0-23 | , - * / |
日 | 是 | 1-31 | , - * ? / L W |
月 | 是 | 1-12 / JAN-DEC | , - * / |
周 | 是 | 1-7 / SUN-SAT | , - * ? / L # |
年 | 否 | 1970-2099 | , - * / |
通配符说明: