一. 前言

最近经常有小伙伴问辉哥,咋能快速实现定时任务呀?看了一堆Quartz、XXL-Job、Elastic-Job等,看的是眼花缭乱懵懵懂懂的,有没有更简单的方式呢?来,今天辉哥手把手地带着你学会定时任务,只要5分钟,让你玩转定时任务!

二. 定时任务

定时任务又叫做任务调度,主要是用于实现按照一定的时间格式,或指定的日期重复地执行某个业务。比如:

  • 每个月25号的信用卡还款提醒;
  • 每隔5分钟一次进行心跳检查;
  • 系统会员的生日提醒;
  • 缓存数据的定时同步更新;
  • ……

spark 延时执行时间 spark定时任务_java

三. Spring Task

1. Spring Task是什么

Spring3.0之后,提供了一种史上最简单的定时任务(如有不服,请在评论区“大辩”哟),这就是Spring Task。可以说,它简单又好用,真的是谁用谁知道。话不多说,辉哥给你来个小旋涡,开怼!

2. Spring Task初体验

  • 创建SpringBoot项目

spark 延时执行时间 spark定时任务_定时任务_02

  • 在入口类添加@EnableScheduling注解

spark 延时执行时间 spark定时任务_java_03

  • 编写代码实现定时任务
@Component
public class HelloJob {
    @Scheduled(cron = "0/3 * * * * ?")
    public void hi(){
        System.err.println("大家好,我是 遇见辉哥-"+System.currentTimeMillis());
    }
}
  • 运行测试

spark 延时执行时间 spark定时任务_spark 延时执行时间_04

看到了吗,是不是贼简单?

不好意思,辉哥,你写的是啥玩意,我都看不懂!对,主要就是那个cron是嘛意思?

四. Spring Task核心

1. CRON表达式

cron表达式是字符串,实际上是由七个部分组成,表示描述细节的时间表,主要用于任务调度。它的组成格式为:秒 分 时 日 月 星期 年

cron每个部分的详细说明如下所示:

spark 延时执行时间 spark定时任务_spark 延时执行时间_05

具体表达式中可以出现的符号如下所示:

spark 延时执行时间 spark定时任务_spark 延时执行时间_06

如果你觉得自己设计cron表达式,我们也可以在线生成。来吧,辉哥给你个地址可以在线生成cron:https://cron.qqe2.com/

spark 延时执行时间 spark定时任务_定时任务_07

2. Spring Task的核心注解

@EnableScheduling这个注解,修饰的是类,主要作用是用于启动定时任务,时刻监控我们所写的任务该不该触发。

@Scheduled这个注解,修饰的是方法,主要用来标记哪个方法需要定时触发,同时通过内部属性cron实现定时任务的触发规则,其实就是编写cron表达式。

ps:记得需要定时执行的方法,需要利用IOC创建对象,要不然怎么触发呢?

3. 小结

好了,到这里辉哥就把定时任务的简单使用给大家说完了。我们来看看表,嗯,5分钟还差一秒,现在你会了吗?

当然,至于你要编写什么具体的定时任务,这还得从你的具体需求出发。有任何问题的小伙伴,都可以关注和私信我们哟,希望每个在编程路上狂奔的小伙伴,都能收获更多的知识!让我们一起加油一起冲!