专栏首页Java成长之路Quartz之CronTrigger

Quartz之CronTrigger

上篇博文简单的介绍了Quartz的基本使用,现在介绍一下最常用的触发器:CronTrigger

简介

CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表。 CronTrigger,你可以指定触发的时间表如“每星期五中午”,或“每个工作日9:30时”,甚至“每5分钟一班9:00和10:00逢星期一上午,星期三星期五“。 即便如此,SimpleTrigger一样,CronTrigger拥有的startTime指定的时间表时生效,指定的时间表时,应停止(可选)结束时间。

Cron Expressions

CronTirgger 类似于 LINUX 上的任务调度命令 crontab,即利用一个包含 7 个字段的表达式来表示时间调度方式。

字段

允许值

允许的特殊字符

Seconds(秒)

0-59

, - * /

Minutes(分)

0-59

, - * /

Hours(小时)

0-23

, - * /

Day-of-Month(日期)

1-31

, - * ? / L W C

Month(月份)

1-12 或者 JAN-DEC ( JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV、 DEC)

, - * /

Day-of-Week(星期)

1-7 或者 SUN-SAT ( SUN, MON, TUE, WED, THU, FRI、SAT)

, - * ? / L C #

Year(年)(可选)

留空, 1970-2099

, - * /

例如,”0 15 10 * * ? *” 表示每天的 10:15AM 执行任务。”0 10 14 ? 3 WED” 表示三月份的每个星期三的下午 14:10PM 执行任务。

特殊字符含义

  • “*” 代表整个时间段.
  • “?”字符:表示不确定的值
  • “,”字符:指定数个值
  • “-”字符:指定一个值的范围
  • “/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m。 例如: “0/15”表示每隔15分钟执行一次,“0”表示为从“0”分开始, “3/20”表示表示每隔20分钟执行一次,“3”表示从第3分钟开始执行
  • “L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X
  • “W”字符:指定离给定日期最近的工作日(周一到周五) 例如: “15W”放在每月(day-of-month)字段上表示为“到本月15日最近的工作日”
  • “#”字符:表示该月第几个周X。6#3表示该月第3个周五 例如: 在每周(day-of-week)这个字段中内容为”6#3” or “FRI#3” 则表示“每月第三个星期五”

常用Cron表达式

  • 每隔5秒执行一次:/5 * * * ?
  • 每隔1分钟执行一次:0 /1 * * ?
  • 每天23点执行一次:0 0 23 * * ?
  • 每天凌晨1点执行一次:0 0 1 * * ?
  • 每月1号凌晨1点执行一次:0 0 1 1 * ?
  • 每月最后一天23点执行一次:0 0 23 L * ?
  • 每周星期天凌晨1点实行一次:0 0 1 ? * L
  • 在26分、29分、33分执行一次:0 26,29,33 * * * ?
  • 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

使用 CronExpBuilder 自动生成 Cron表达式

CronExpBuilder 主要有两个功能:

  • 生成 Cron表达式

生成 Cron表达式 如上图所示,使用 CronExpBuilder 可以很方便的生成 Cron表达式。

  • 解析 Cron表达式

解析 Cron表达式 如上图所示,使用 CronExpBuilder 可以很方便的解析 Cron表达式。

下载地址: https://bintray.com/artifact/download/wjw465150/Java/CronExpBuilder.jar github地址:https://github.com/wjw465150/CronExpBuilder

相关博文: Quartz入门指南

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 计算n的阶乘的俩种方法

    递归函数的优点是算法设计容易, 但诋毁函数的优点是在牺牲了存储空间的基础上得到的。

    栋先生
  • 五、Java对象的访问定位

    Java对象在访问的时候,我们需要通过java虚拟机栈的reference类型的数据去操作具体的对象。由于reference类型在java虚拟机规范中只规定了一...

    栋先生
  • 七、引用(reference)详解

    如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。引用不等同于对象本身,根据虚拟机种类的不同,可能是一个指...

    栋先生
  • Gartner 预测:2017年全球CRM软件市场份额将达到365亿美元

    T客汇官网:tikehui.com 编译:杨丽 ? CRM软件购买商往往认为选择行业领袖是最佳选择。CRM供应商则通过市场份额占有数字来争夺市场领导地位,从而获...

    人称T客
  • 通过Shared Informer扩展Kubernetes

    Kubernetes运行一组控制器,使资源的当前状态与所需的状态保持匹配。可以是一个Pod,服务或任何可以通过Kubernetes控制的东西。K8s的核心价值是...

    CNCF
  • 运维自动化基础建设|分布式任务调度平台

    为什么强调是分布式调度平台,系统原生的crontab配置是单机的,如果机器挂掉,那机器上的任务自然而然的就不会再运行,如果是重要业务,那影响还是蛮大的。使用原生...

    追马
  • 我们为什么放弃 MongoDB 和 MySQL,选择 TiDB

    技术选型是由技术方向和业务场景 trade-off 决定的,脱离业务场景来说技术选型是没有任何意义的,所以本文只是阐述了伴鱼技术团队数据库选型的过程,这并不是 ...

    深度学习与Python
  • 中移物联网在车联网场景的 TiDB 探索和实现

    中移物联网有限公司是中国移动通信集团公司投资成立的全资子公司,公司按照中国移动整体战略布局,围绕“物联网业务服务的支撑者、专用模组和芯片的提供者、物联网专用产品...

    PingCAP
  • c++返回值 注意事项

    1.不要返回指向局部变量或临时对象的引用。函数执行完毕后,局部变量和临时对象会消失,引用将指向不存在的数据 2.返回指向const对象的引用    使用cons...

    lpxxn
  • 数据库领域正在发生巨变,从 TiDB 5.0 发布会看未来的数据库发展趋势

    前不久,PingCAP 刚刚度过六岁生日。对于数据库这样一个古老的行业,六年只是刚刚起步。TiDB 5.0 的发布就像一个庆祝成长的生日礼物,为 TiDB 带来...

    PingCAP

扫码关注云+社区

领取腾讯云代金券