Java(Spring) 中 cron 表达式常用场景汇总

概述

在开发过程中经常要用到定时任务,来执行一些特定程序。而 Java(Spring) 可以方便的使用 cron 表达式来实现定时任务。
本文将介绍 cron 表达式,并且对常用的定时任务场景,给出对应的 cron 表达式,相信能为你节省一些资料查找的时间。

CRON表达式简介

CRON表达式是一个字符串,在 Java(Spring) 中包含6个由空格分隔的字段,表示一组时间,通常作为执行某个程序的时间表。
以 Java(Spring) 为例说明:
* * * * * *
上面的表达式有6个字段,从第1个到第6个字段,分别表示:秒、分钟、小时、Day of month、月份、Day of week。

字段是否必填允许值允许特殊字符备注
0-59*,-
分钟0-59*,-
小时0-23*,-
Day of month1-31*,-?
月份1-12*,-
Day of week0-7*,-?0和7为周日

逗号 用于分隔列表。例如,在 Day of week 字段中,1,3,6 表示周一、周三和周六。
连字符 定义范围。例如,在 Day of month 字段中,15-20 表示15号至20号期间的天,包含15号和20号。

常见场景
  1. 每15分钟执行一次
    0 0/15 * * * ?

  2. 每天凌晨2点执行一次
    0 0 2 * * ?

  3. 每天上午10点和晚上10点分别执行一次
    0 0 10,22 * * ?

  4. 每周星期天23点59分执行一次
    0 59 23 * * 7

  5. 每月最后一天的23点执行一次
    0 0 18 28-31 * ?
    一个月最少有 28 天,最多 31 天,所以天数那一项填的是 28-31。
    如果一个月有31天,上面的表达式会导致 28,29,30,31号都会执行一次,所以还需要结合下面的代码来保证每个月只执行一次,

@Scheduled(cron = "0 0 18 28-31 * ?")
public void doAtLastDayOfMonth() {
    final Calendar calendar = Calendar.getInstance();
    if (c.get(Calendar.DATE) == c.getActualMaximum(Calendar.DATE)) {
        // do something
    }
}

关注我的技术公众号,每周都有优质技术文章推送。
微信扫一扫下方二维码即可关注:
qrcode_for_gh_1079f4863c41_344.jpg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ToSimpleL

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

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

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

打赏作者

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

抵扣说明:

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

余额充值