Springboot定时任务(1)

前言

在springboot中使用定时定时任务可以说是一种享受

依赖

不需要引入其他的依赖,springboot框架的默认依赖就足以满足

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

开启注解

在启动类上需要加入@EnableScheduling注解,然后在需要定时执行的方法上面加上@Scheduled注解,常用参数类型如下

  • cron 使用cron表达式,格式为0 * * * * MON-FRI,文档解释为
    • second
    • minute
    • hour
    • day of month
    • month
    • day of week
@Scheduled(cron = "0/5 * * * * ?")
    public void test(){
        System.out.println("test开始执行时间:"+ LocalDateTime.now().toLocalTime());

        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("test执行完成时间:"+ LocalDateTime.now().toLocalTime());
    }

运行结果

test开始执行时间:18:03:20.003
test执行完成时间:18:03:30.004
test开始执行时间:18:03:35
test执行完成时间:18:03:45.002
test开始执行时间:18:03:50.001
test执行完成时间:18:04:00.005
test开始执行时间:18:04:05.002
test执行完成时间:18:04:15.006
test开始执行时间:18:04:20.005
test执行完成时间:18:04:30.006
test开始执行时间:18:04:35
test执行完成时间:18:04:45.005
test开始执行时间:18:04:50
test执行完成时间:18:05:00.005
test开始执行时间:18:05:05.001
test执行完成时间:18:05:15.004
test开始执行时间:18:05:20.001
test执行完成时间:18:05:30.001
test开始执行时间:18:05:35.003
test执行完成时间:18:05:45.006
test开始执行时间:18:05:50.001
test执行完成时间:18:06:00.003
test开始执行时间:18:06:05.003
  • fixedDelay 官方解释Execute the annotated method with a fixed period in milliseconds between the end of the last invocation and the start of the next.
    翻译过来是差不多这个意思:在上一次调用结束和下一次调用开始之间延迟指定的以毫秒为单位的固定时间段,执行带注解的方法。特殊例子,设置的fixedDelay=5000毫秒,而执行此方法需要10s,假如第一次执行时间为00:00:00,那么第二次执行的时间为00:00:15,第三次执行的时间为00:00:30
@Scheduled(fixedDelay = 5000)
    public void test1() {
        System.out.println("test开始执行时间:" + LocalDateTime.now().toLocalTime());

        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("test执行完成时间:" + LocalDateTime.now().toLocalTime());
    }

执行结果:


test开始执行时间:18:10:07.093
test执行完成时间:18:10:17.096
test开始执行时间:18:10:22.100
test执行完成时间:18:10:32.101
test开始执行时间:18:10:37.103
test执行完成时间:18:10:47.107
test开始执行时间:18:10:52.111
  • fixedRate 官方解释Execute the annotated method with a fixed period in milliseconds between invocations.
    每隔指定的毫秒数执行此方法,如果上一次的任务没有执行完毕,那么下一次执行的时间是在上一次执行完之后,立即执行,举个例子,设置的fixedRate=5000毫秒,而执行此方法需要10s,假如第一次执行时间为00:00:00,那么第二次执行的时间为00:00:10,第三次执行的时间为00:00:20
@Scheduled(fixedRate = 5000)
    public void test1() {
        System.out.println("test开始执行时间:" + LocalDateTime.now().toLocalTime());

        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("test执行完成时间:" + LocalDateTime.now().toLocalTime());
    }

执行结果

test开始执行时间:18:08:13.248
test执行完成时间:18:08:23.248
test开始执行时间:18:08:23.249
test执行完成时间:18:08:33.251
test开始执行时间:18:08:33.251
test执行完成时间:18:08:43.252
test开始执行时间:18:08:43.252
test执行完成时间:18:08:53.254
test开始执行时间:18:08:53.255
test执行完成时间:18:09:03.258
test开始执行时间:18:09:03.259
test执行完成时间:18:09:13.259
test开始执行时间:18:09:13.259
test执行完成时间:18:09:23.260

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

micro_cloud_fly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值