@File
2019-10-14T08:49:21.000000Z
字数 2429
阅读 133
java
参考文档:https://blog.csdn.net/private66/article/details/82261410
@Scheduled(cron="秒 分 时 日 月 周")
*
和?
一样,填充符
/
间隔秒数
8-10
时间范围
8,10
多个时间
L
最后
W
工作日
SUN
周日(1)
MON
周一(2)
TUE
周二(3)
WED
周三(4)
THU
周四(5)
FRI
周五(6)
SAT
周六(7)
位置 | 取值范围 | 可用特殊语法 |
---|---|---|
秒 | 0-59 |
, - * / |
分 | 0-59 |
, - * / |
时 | 0-23 |
, - * / |
日 | 1-31 |
, - * ? / L W C |
月 | 1-12 或者 JAN-DEC |
, - * / |
周 | 1-7 或者 SUN-SAT |
, - * ? / L C # |
年(可选) | 留空, 1970-2099 |
, - * / |
@EnableScheduling
入口开启定时任务
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class);
}
}
@Scheduled
设置定时任务cron: 通过cron表达式控制触发时间(常用)
fixedRate: 间隔多少毫秒再次触发(常用)
fixedDelay: 完成后延迟多少毫秒(常用)
initialDelay: 延迟多少毫秒后再触发(常用)
zone: 时区设置,默认当前时区
fixedRateString: 字符串形式的fixedRate
fixedDelayString: 字符串形式的fixedDelay
initialDelayString: 字符串形式的initialDelay
@Scheduled("0 0 10,14,16 * * ?") // 每天上午10点,下午2点,4点
@Scheduled(0 0/30 9-17 * * ?) // 朝九晚五工作时间内每半小时
@Scheduled(0 0 12 ? * WED) // 表示每个星期三中午12点
@Scheduled("0 0 12 * * ?") // 每天中午12点触发
@Scheduled("0 15 10 ? * *") // 每天上午10:15触发
@Scheduled("0 15 10 * * ?") // 每天上午10:15触发
@Scheduled("0 15 10 * * ? *") // 每天上午10:15触发
@Scheduled("0 15 10 * * ? 2005") // 2005年的每天上午10:15触发
@Scheduled("0 * 14 * * ?") // 在每天下午2点到下午2:59期间的每1分钟触发
@Scheduled("0 0/5 14 * * ?") // 在每天下午2点到下午2:55期间的每5分钟触发
@Scheduled("0 0/5 14,18 * * ?") // 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
@Scheduled("0 0-5 14 * * ?") // 在每天下午2点到下午2:05期间的每1分钟触发
@Scheduled("0 10,44 14 ? 3 WED") // 每年三月的星期三的下午2:10和2:44触发
@Scheduled("0 15 10 ? * MON-FRI") // 周一至周五的上午10:15触发
@Scheduled("0 15 10 15 * ?") // 每月15日上午10:15触发
@Scheduled("0 15 10 L * ?") // 每月最后一日的上午10:15触发
@Scheduled("0 15 10 ? * 6L") // 每月的最后一个星期五上午10:15触发
@Scheduled("0 15 10 ? * 6L 2002-2005") // 2002年至2005年的每月的最后一个星期五上午10:15触发
@Scheduled("0 15 10 ? * 6#3") // 每月的第三个星期五上午10:15触发
@Component
public class MySheduleConfig implements SchedulingConfigurer {
public Executor getExecutor() {
return Executors.newScheduledThreadPool(3); //开启特定的任务线程,开启3个
}
//
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(getExecutor());
}
}
@Component
public class MySchedule {
@Scheduled(cron = "0/5 * * * * *")
public void doSomething() {
System.out.println("每五秒执行的任务线程名:" + Thread.currentThread().getName());
System.out.println("定时任务开始................");
}
@Scheduled(cron = "0/3 * * * * *")
public void doSomething1() {
System.out.println("每3秒执行的任务线程名:" + Thread.currentThread().getName());
System.out.println("定时任务每3秒执行一次次,任务开始执行...");
}
@Scheduled(cron = "0/10 * * * * *")
public void doSomething2() {
System.out.println("每10秒执行的任务线程名:" + Thread.currentThread().getName());
System.out.println("定时任务每天早8点到晚8点,每20分钟执行一次,开始");
}
}