spring boot定时任务
介绍
该demo是基于注解(@Scheduled)以及多线程执行的定时任务。
步骤
启用异步执行
入口类添加启动注解
@EnableScheduling
@EnableAsync
@EnableScheduling
@SpringBootApplication
@IntegrationComponentScan("com.ztjy")
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
编写定时任务
@Component
public class TestScheduling {
@Value("${my.test.name}")
private String test;
@Async
@Scheduled(cron="${my.test.cron}")
public void printVal(){
System.out.println(test+Thread.currentThread().getName());
}
@Async
@Scheduled(cron="${my.test.cron}")
public void printVal2(){
System.out.println(test+Thread.currentThread().getName());
}
}
配置文件
每分钟执行一次!
my:
test:
name: "王森"
cron: "* */1 * * * ?"
效果
cron表达式详解
秒(0~59) 分(0~59) 时(0~59) 日(0~31) 月(0~11) 星期(1~7) 年份(1970-2099)
注意:各个之间的区域是由空格分开的。
年份可以省略。
- 特殊字符介绍
, 3,8 表示第3秒和第8秒
- 3-8 表示第3秒到第8秒之间每秒都触发
* 表示任意值,在秒的区域上表示每秒,在分钟的区域上描述每分钟
/ A/B A表示开始触发点,B表示触发点之后每隔多久再次触发,比如在秒的位置上5/10 第5秒开始触发,5,15,25,35,45,55,65等
? 仅被用于月 和 星期 两个子表达式,表示不指定值;
示例
-
示例1:
-
示例2:
-
示例3:
让自己变得更优秀才可以有更多资源