springboot使用@Scheduled作定时任务详细用法

本文介绍了如何在SpringBoot中使用@Scheduled注解实现定时任务,包括固定间隔执行和异步执行。此外,讨论了@Scheduled的cron表达式配置,用于更精确的定时任务调度,例如按特定日期和时间执行。通过示例展示了cron表达式的使用,如每个星期三午夜执行的任务。
摘要由CSDN通过智能技术生成

springboot中quartz可以作定时任务,@Scheduled也可以

Spring Boot启动类标注@EnableScheduling,然后再开发一个服务类,:

测试简易定时任务:

package com.springboot.chapter13.service.impl;
/**** imports ****/
@Service
public class ScheduleServiceImpl {
    // 计数器
    int count1 = 1;
    int count2 = 1;

    // 每隔一秒执行一次
    @Scheduled(fixedRate = 1000)
    // 使用异步执行
    @Async
    public void job1() {
        System.out.println("【" +Thread.currentThread().getName()+"】"
                + "【job1】每秒钟执行一次,执行第【" + count1 + "】次");
        count1 ++;
    }

    // 每隔一秒执行一次
    @Scheduled(fixedRate = 1000)
    // 使用异步执行
    @Async
    public void job2() {
        System.out.println("【" +Thread.currentThread().getName()+"】"
                + "【job2】每秒钟执行一次,执行第【" + count2 + "】次");
        count2 ++;
    }
    }

这里的注解@Scheduled配置为按时间间隔执行,每隔1 s便执行一次。使用@Async注解代表这需要使用异步线程执行,上述中@Scheduled只是按照时间间隔执行,有时候需要指定更为具体的时间,例如,每天晚上11:00开始跑批量生成报表,或者一些任务在每周日执行。为了能够更为精确地指定任务执行的时间,所以有必要更为细致地研究@Scheduled的配置项,如表13-1所示。
在这里插入图片描述
表13-1中的配置项除了cron外都比较好理解,只有cron是可以通过表达式更为灵活地配置运行的方式。cron有6~7个空格分隔的时间元素,按顺序依次是“秒 分 时 天 月 星期 年”,其中年是一个可以不配置的元素,例如下面的配置:
0 0 0 ? * WED 这个配置表示每个星期三中午0点整。这个表达式需要注意的是其中的特殊字符,如?和*,这里因为天和星期会产生定义上的冲突,所以往往会以通配符?表示,它表示不指定值,而*则表示任意的月。除此以外还会有表13-2所示的其他通配符。 表13-2 通配符含义 为了说明它们的使用,下面举例如表13-3所示。
在这里插入图片描述

cron表达式:

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值