• 实战讲解 SpringBoot 定时任务:@Scheduled


    最近的开发中又遇到了关于定时调度的开发任务,在定时调度其实有很多的第三方平台可以接入,但是其实在SpringBoot有自带的定时任务注解@Scheduled。@Scheduled可以通过注解配置快速实现方法的定时调度,直接在方法加上@Scheduled注解即可。

    1@Scheduled注解参数

    1.cron参数
    这个参数是最经常使用的参数,表示接收一个cron参数,cron它是一个表达式,最多接收7个参数,从左到右分别表示:秒 分 时 天 月 周 年;参数以空格隔开,其中年不是必须参数,可以省略。

    
    /**
    * cron 一共可以有7个参数 以空格分开 其中年不是必须参数
    * [秒] [分] [小时] [日] [月] [周] [年]
    * 一下表示
    */
    @Scheduled(cron ="0 0 0 * * * ?")
    public void testScheduledCron(){
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    注意!!!在使用时需要在类上添加注解@EnableScheduling,表示开启定时任务。

    cron参数意义:

    在这里插入图片描述
    常用通配符:

    • *:表示所有值 比如用在日 表示每一天。
    • ?:表示不指定值 比如周配置 表示不指定星期几执行。
    • /:表示递增触发 比如 用在分 5/20 从第五分钟开始 每增加20分钟执行一次。
    • -:表示区间 比如用在 1-6 表示一月到六月执行。

    示例:

    每天凌晨零点执行

    @Scheduled(cron ="0 0 0 * * * ?")
    
    • 1

    每隔五分钟执行

    @Scheduled(cron ="0 */5 0 * * * ?")
    
    • 1

    2.zone参数
    zone能够指定获取的时区,默认是空,表示使用服务器所在时区,比如Asia/BeiJingi或者Asia/Shanghai。
    3.fixedDelay
    fixedDelay表示上次调用结束后与下次调用之间的固定时间,单位是毫秒。

     @Scheduled(fixedDelay= 3000)
    
    • 1

    示距离上次调用后三秒再执行

    4.fixedDelayString
    fixedDelayString与fixedDelay是几乎一样的,唯一的差异是fixedDelayString是支持占位符的。
    5.fixedRate
    fixedRate表示多久执行一次,单位是毫秒。与cron的/通配符用法相似;

     @Scheduled(fixedRate= 3000)
    
    • 1

    表示每三秒执行一次

    6.fixedRateString
    fixedRate的升级,支持占位符
    7.initialDelay
    表示第一次延迟多少毫秒执行,单位是毫秒

    @Scheduled(initialDelay= 3000)
    
    • 1

    表示第一次执行时,延迟3秒执行
    8.initialDelayString

    initialDelay的升级,支持占位符。

    2注意

    @Scheduled使用时,是在本机进行任务调度,但是目前几乎所有的应用为了增加发负载量,都是使用多机部署。这就导致了一个非常严重的分布式问题:在每一台机器上都会在同时执行定时调度任务,可能产生很多重复数据或者导致系统出现其他的业务逻辑BUG,所以在使用@Scheduled进行任务调度时,一定要配合redis的分布式锁来使用,让定时调度任务只在一台机器上执行,避免BUG出现。同时对于可能出现的失败任务一定要做好日志记录,方便排查和改错哟~

  • 相关阅读:
    redis笔记3
    Java语言----二叉树
    Git使用
    kubernetes(K8S)集群yaml常见用法
    ONLYOFFICE 文档 7.5 现已发布:新增 PDF 编辑器、屏幕朗读器等功能
    通过 Express Migration 轻松迁移到 Elastic 的 AI 驱动日志分析
    LeetCode(24)文本左右对齐【数组/字符串】【困难】
    Mybatis的各种查询功能
    FreeRTOS教程9 软件定时器
    Jetson相机
  • 原文地址:https://blog.csdn.net/weixin_44831330/article/details/133900660