在了解定时任务之前,首先需要了解corn表达式
corn表达式
参考此文章,点击这里到达
cron表达式实际仍是一个字符串,由6到7个字段组成,用空格分隔。其中前6个字段是必须的,最后一个是可选的
对应分别是“ 秒 分 时 日 月 周 (年) ”
-
常用字符:
*
: “每” 的意思 , 可以作用在每个字段上,表示每时、每分、每秒-
: 用来指定值的范围,[0-60],作用在秒、分字段上,
: 指定某几个值,比如[2,4,5],在秒字段里就是每分钟的第2,第4,第5秒/
: 指定值的起始和增加幅度。比如[3/5],在秒字段就是每分钟的第3秒开始,每隔5秒生效一次?
: 标识不生效的字段,仅用于日和周字段。 因为在指定某日和周几的时候,这两个值实际上是冲突的,
所以需要用【?】标识不生效的字段。比如【0 1 * * * ?】就代表每年每月每日每小时的1分0秒触发任务。这里的周就没有效果了。
-
特殊字符
SUN
:仅用于【周】字段,表示星期日。
L
:即last,用于【日】【周】字段,用处不同代表的意义不同
java中定时任务
参考此文章,点击这里到达
- 这里主要记录 Spring Task 方法
Spring自带了一套定时任务工具Spring-Task,可以把它看成是一个轻量级的Quartz- 在Spring Boot项目中,需要在启动类上添加
@EnableScheduling
来开启定时任务 @Scheduled
指定该方法是基于定时任务进行执行,具体执行的频次是由cron指定的表达式所决定
- 在Spring Boot项目中,需要在启动类上添加
实例代码如下:
@Component("taskJob")
public class TaskJob {
@Scheduled(cron = "0 0 3 * * ?")
public void job1() {
System.out.println("通过cron定义的定时任务");
}
@Scheduled(fixedDelay = 1000L)
public void job2() {
System.out.println("通过fixedDelay定义的定时任务");
}
@Scheduled(fixedRate = 1000L)
public void job3() {
System.out.println("通过fixedRate定义的定时任务");
}
}