使用CronTrigger
CronTrigger 能够提供比 SimpleTrigger 更有具体实际意义的调度方案,调度规则基于 Cron 表达式,CronTrigger 支持日历相关的重复时间间隔(比如每月第一个周一执行),而不是简单的周期时间间隔。因此,相对于SimpleTrigger而言,CronTrigger在使用上也要复杂一些。
Cron表达式
Quartz使用类似于Linux下的Cron表达式定义时间规则,Cron表达式由6或7个由空格分隔的时间字段组成,如表1所示:
表1 Cron表达式时间字段
位置
|
时间域名
|
允许值
|
允许的特殊字符
|
1
|
秒
|
0-59
|
, - * /
|
2
|
分钟
|
0-59
|
, - * /
|
3
|
小时
|
0-23
|
, - * /
|
4
|
日期
|
1-31
|
, - * ? / L W C
|
5
|
月份
|
1-12
|
, - * /
|
6
|
星期
|
1-7
|
, - * ? / L C #
|
7
|
年(可选)
|
空值1970-2099
|
, - * /
|
Cron表达式的时间字段除允许设置数值外,还可使用一些特殊的字符,提供列表、范围、通配符等功能,细说如下:
●星号(*):可用在所有字段中,表示对应时间域的每一个时刻,例如,*在分钟字段时,表示“每分钟”;
●问号(?):该字符只在日期和星期字段中使用,它通常指定为“无意义的值”,相当于点位符;
●减号(-):表达一个范围,如在小时字段中使用“10-12”,则表示从10到12点,即10,11,12;
●逗号(,):表达一个列表值,如在星期字段中使用“MON,WED,FRI”,则表示星期一,星期三和星期五;
●斜杠(/):x/y表达一个等步长序列,x为起始值,y为增量步长值。如在分钟字段中使用0/15,则表示为0,15,30和45秒,而5/15在分钟字段中表示5,20,35,50,你也可以使用*/y,它等同于0/y;
●L:该字符只在日期和星期字段中使用,代表“Last”的意思,但它在两个字段中意思不同。L在日期字段中,表示这个月份的最后一天,如一月的31号,非闰年二月的28号;如果L用在星期中,则表示星期六,等同于7。但是,如果L出现在星期字段里,而且在前面有一个数值X,则表示“这个月的最后X天”,例如,6L表示该月的最后星期五;
●W:该字符只能出现在日期字段里,是对前导日期的修饰,表示离该日期最近的工作日。例如15W表示离该月15号最近的工作日,如果该月15号是星期六,则匹配14号星期五;如果15日是星期日,则匹配16号星期一;如果15号是星期二,那结果就是15号星期二。但必须注意关联的匹配日期不能够跨月,如你指定1W,如果1号是星期六,结果匹配的是3号星期一,而非上个月最后的那天。W字符串只能指定单一日期,而不能指定日期范围;
●LW组合:在日期字段可以组合使用LW,它的意思是当月的最后一个工作日;
●井号(#):该字符只能在星期字段中使用,表示当月某个工作日。如6#3表示当月的第三个星期五(6表示星期五,#3表示当前的第三个),而4#5表示当月的第五个星期三,假设当月没有第五个星期三,忽略不触发;
● C:该字符只在日期和星期字段中使用,代表“Calendar”的意思。它的意思是计划所关联的日期,如果日期没有被关联,则相当于日历中所有日期。例如5C在日期字段中就相当于日历5日以后的第一天。1C在星期字段中相当于星期日后的第一天。
Cron表达式对特殊字符的大小写不敏感,对代表星期的缩写英文大小写也不敏感。
表2下面给出一些完整的Cron表示式的实例:
表2 Cron表示式示例
表示式
|
说明
|
"0 0 12 * * ? "
|
每天12点运行
|
"0 15 10 ? * *"
|
每天10:15运行
|
"0 15 10 * * ?"
|
每天10:15运行
|
"0 15 10 * * ? *"
|
每天10:15运行
|
"0 15 10 * * ? 2008"
|
在2008年的每天10:15运行
|
"0 * 14 * * ?"
|
每天14点到15点之间每分钟运行一次,开始于14:00,结束于14:59。
|
"0 0/5 14 * * ?"
|
每天14点到15点每5分钟运行一次,开始于14:00,结束于14:55。
|
"0 0/5 14,18 * * ?"
|
每天14点到15点每5分钟运行一次,此外每天18点到19点每5钟也运行一次。
|
"0 0-5 14 * * ?"
|
每天14:00点到14:05,每分钟运行一次。
|
"0 10,44 14 ? 3 WED"
|
3月每周三的14:10分到14:44,每分钟运行一次。
|
"0 15 10 ? * MON-FRI"
|
每周一,二,三,四,五的10:15分运行。
|
"0 15 10 15 * ?"
|
每月15日10:15分运行。
|
"0 15 10 L * ?"
|
每月最后一天10:15分运行。
|
"0 15 10 ? * 6L"
|
每月最后一个星期五10:15分运行。
|
"0 15 10 ? * 6L 2007-2009"
|
在2007,2008,2009年每个月的最后一个星期五的10:15分运行。
|
"0 15 10 ? * 6#3"
|
每月第三个星期五的10:15分运行。
|
分享到:
相关推荐
### Quartz任务调度快速入门知识点详解 #### 一、Quartz框架简介 Quartz是一个功能强大的开源作业调度框架,被广泛应用于Java应用中实现任务的定时调度。Quartz通过对任务调度领域的核心问题进行高度抽象,提炼出...
### Quartz框架快速入门详解 #### 一、Quartz框架简介 Quartz是一个开源的作业调度框架,用于开发Java应用程序。它提供了强大的触发器(Trigger)机制用于关联作业(Job),同时还具备灵活的表达式用于配置定时...
Quartz 是一个开源的任务调度框架,它允许程序员在 Java 应用程序中安排复杂的作业执行。Quartz 提供了丰富的 API 和配置选项,使得开发者能够灵活地定义作业和触发器,实现定时任务的自动化管理。 Quartz 的核心...
【Quartz任务调度框架】 Quartz是一个开源的任务调度框架,非常适合初学者入门。它为Java开发者提供了一种高效且可控的方式来实现定时任务的调度。在各种企业应用中,任务调度的需求非常常见,例如定期清理系统垃圾...
Quartz 任务调度框架 Quartz 是一个功能强大且灵活的任务调度框架,广泛应用于各种企业应用中,例如定时清理系统垃圾文件、定时导入导出数据、...5.MIS 系统的任务调度,例如统计上个月各部门的业务数据生成月报表等。
Quartz调度任务学习(快速开发入门),帮助你快速掌握Quartz的开发,使用性较强
这个"quartz1.5.0 任务调度demo"应该包含了以上步骤的示例代码,可以帮助你快速理解并实践Quartz的使用。在实际开发中,你可以根据项目需求,利用Quartz的灵活性和强大功能,构建复杂且可靠的定时任务系统。
【Quartz任务调度框架】 Quartz是一个开源的任务调度框架,专为Java应用程序设计,用于创建、管理和执行计划任务。在企业应用中,任务调度是非常常见且重要的需求,例如定期清理系统垃圾文件、定时导入导出数据、...
这个项目包含15个入门实例,旨在帮助开发者快速理解并掌握Quartz在实际业务中的应用。Quartz 2.1.7是这些示例所使用的版本,它是一个稳定且功能丰富的版本。 一、Quartz基本概念 1. 作业(Jobs):Quartz中的核心元素...
本文将引导您快速入门 Quartz 框架,了解其基本使用方法。 首先,要开始使用 Quartz,您需要从官方网站下载对应的 JAR 包,通常为 quartz-<version>.jar。除此之外,根据您的需求,Quartz 可能还需要一些第三方库,...
Quartz是一款开源的作业调度框架,它允许开发者创建、组织和执行计划任务。这个实例是为初学者设计的,用于帮助理解Quartz的基本概念和使用方式。在MyEclipse 6.0.1环境下,你可以直接运行这个Spring整合Quartz的...
本示例“web环境下Quartz作业调度入门源代码(Jboss)”提供了一个基础的Quartz在Web应用中的实现,下面我们将详细探讨相关的知识点。 1. **Quartz简介** - Quartz是一个轻量级的作业调度框架,支持Cron表达式和复杂...
Quartz框架是一款强大的开源任务调度库,广泛应用于Java环境下的定时任务管理。要开始使用Quartz,首先需要在项目中引入必要的依赖。基础依赖是quartz-<version>.jar,这是Quartz的核心库。除此之外,根据你的需求,...
Quartz支持多种特性,如数据库集成、集群、插件系统、EJB作业、cron-like表达式等,这使得它成为一个功能丰富的任务调度解决方案。 在Quartz中,任务被称为“作业”(Job),每个作业都需要实现`org.quartz.Job`...
本篇文章将带你快速入门Quartz框架,了解如何在Spring中集成Quartz以及创建和执行Job。 首先,要使用Quartz框架,你需要在项目中引入必要的库文件。主要依赖的JAR是quartz-<version>.jar,此外,由于Quartz可能需要...
Quartz Scheduler 是一种功能丰富、开源的任务调度程序库,可以在任何 Java 程序中使用。它可以用来创建简单或者复杂的执行次数可以达成千上万的任务。任务可以是任何 Java 可以做的事情。 什么是 Quartz Scheduler...
- 从提供的文件"QuartzBeginnerExample"来看,可能包含了一个简单的Quartz.NET入门示例,帮助开发者快速理解如何创建、调度和运行任务。 - "作业调度.docx"可能包含了更详细的关于任务调度的理论知识和实践指南,...
通过以上内容,你可以开始使用Quartz进行任务调度,并结合Spring实现更灵活的管理。继续深入学习Quartz的高级特性,如集群支持、作业监听器和触发器监听器,将有助于构建更加健壮和可扩展的定时任务系统。