From bb8693eeaacbd45d6c489d4539b197d8f0429b2a Mon Sep 17 00:00:00 2001 From: bseayin Date: Sat, 17 Aug 2019 21:19:59 +0800 Subject: [PATCH] jap --- SpringBootBasic/src/main/java/com/zz/App.java | 2 + .../src/main/java/com/zz/util/TimerDemo1.java | 70 +++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 SpringBootBasic/src/main/java/com/zz/util/TimerDemo1.java diff --git a/SpringBootBasic/src/main/java/com/zz/App.java b/SpringBootBasic/src/main/java/com/zz/App.java index bb1e5c5..78a2e87 100644 --- a/SpringBootBasic/src/main/java/com/zz/App.java +++ b/SpringBootBasic/src/main/java/com/zz/App.java @@ -2,6 +2,7 @@ package com.zz; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; /** * 右键--》run as application 运行正启动类的main方法,就可以启动这个springboot项目。 SpringBoot 自带了 tomcat, 运行这个main方法 的时候,会同时启动tomcat @@ -9,6 +10,7 @@ SpringBoot 自带了 tomcat, 运行这个main方法 的时候,会同时启 * */ @SpringBootApplication +@EnableScheduling public class App { public static void main(String[] args) { diff --git a/SpringBootBasic/src/main/java/com/zz/util/TimerDemo1.java b/SpringBootBasic/src/main/java/com/zz/util/TimerDemo1.java new file mode 100644 index 0000000..24fccca --- /dev/null +++ b/SpringBootBasic/src/main/java/com/zz/util/TimerDemo1.java @@ -0,0 +1,70 @@ +package com.zz.util; + +import java.time.LocalDateTime; + +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +@Component +public class TimerDemo1 { + + /** + * fixedRate属性 + +该属性的含义是上一个调用开始后再次调用的延时(不用等待上一次调用完成), +这样就会存在重复执行的问题,所以不是建议使用, +但数据量如果不大时在配置的间隔时间内可以执行完也是可以使用的。 + + @Scheduled(fixedRate = 3000) + public void scheduledTask() { + System.out.println("Task executed at " + LocalDateTime.now()); + } + */ + + /**https://www.jianshu.com/p/73784dff0b0e + * Cron 表达式 +96 又语 +2018.08.01 22:23* 字数 580 阅读 201评论 0喜欢 1 +Cron 表达式是表示时间周期的字符串,常用于各种定时任务解决方案,本文中代码示例基于 Spring @Scheduled 定时器 + +语法格式 +Cron 字符串包含 6 或 7 个域,域之间使用空格分隔。 + +包含 6 个域的 Cron 表达式语法格式: + +Seconds Minutes Hours DayofMonth Month DayofWeek + +包含 7 个域的 Cron 表达式语法格式: + +Seconds Minutes Hours DayofMonth Month DayofWeek Year + +有效字符范围 +每个域可使用的有效字符包括: + +Seconds:0~59 的整数,或 , - * / 四个字符 +Minutes:同 Seconds 域一致 +Hours:0~23的整数,或 , - * / 四个字符 +DayofMonth:0~31的整数,或 , - * / ? L W C 八个字符 +Month:1~12的整数,或 JAN ~ DEC,或 , - * / 四个字符 +DayofWeek:1~7的整数,或 SUN ~ SAT,或 , - * / ? L C # 八个字符,注意整数 1 代表星期日,每周第一天从周日开始 +Year:1970~2099,或 , - * / 四个字符 + + */ + + + /** + * (1) , +用于分隔枚举值,如在 Seconds 域使用 10,15,25 表示在第 10 秒、15 秒和 25 秒触发一次, +示例代码如下: + */ + @Scheduled(cron = "10,15,25 * * * * ?") + public void scheduledTask() { + System.out.println("Task executed at " + LocalDateTime.now()); + } + + //每个月的30号凌晨执行 + @Scheduled(cron = "0 0 0 30 * ? ") + public void scheduledTask2() { + System.out.println("Task executed at " + LocalDateTime.now()); + } +}