@File
2019-10-14T08:49:21.000000Z
字数 2429
阅读 211
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@EnableSchedulingpublic 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触发
@Componentpublic class MySheduleConfig implements SchedulingConfigurer {public Executor getExecutor() {return Executors.newScheduledThreadPool(3); //开启特定的任务线程,开启3个}//@Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegistrar) {taskRegistrar.setScheduler(getExecutor());}}
@Componentpublic 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分钟执行一次,开始");}}