03_CronTrigger
【Cron表达式】
Quartz使用类似于Linux下的Cron表达式定义的时间规则,Cron表达式由6到7个空格分隔的时间字段组成。

[ 字符说明 ]
* :可以用在所有字段中,表示对应时间域内的每一个时刻。
?:只能在日期、星期字段中使用。定义为“无意义的值”,相当于占位符。
—:表达一个范围。在小时字段中中"10-12",表示为10点到12点。
,:表示一个列表值。如在星期中使用 “MON , WED , FRI” 表示周一、周三、周五
/ :x/y表示一个等步长序列。x是起始值,y是增量步长值。如在分钟字段中使用“0/15”,表示在0、15、30、45分钟的时候。“5/20”则表示在5、25、45分钟的时候。*/y等同于0/y。
L :L只能在日期和星期中使用,表示“Last”。L在日期字段中,表示这个月份的最后一天;L在星期中,表示星期六(等同于7,这里默认一周的最后一天为周六)。在星期字段中,如果L前面还有一个数字X,表示“这个月的最后X天”,如6L表示该月的最后一个星期5。
W :W只能出现在星期字段里,是对前导日期的修饰,表示该日期最近的工作日。使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一 到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份 。
LW组合:在日期字段里可以使用LW,当月的最后一个工作日。
# :只能在星期中使用,表示当月的某个工作日。如6#3表示当月的第3个星期5。(6:星期5,3:第3个),4#5表示当月的第5个星期3,如果当月没有底5个星期三,则忽略不触发。
C :只能在日期和星期字段中使用,代表"Calendar",计划所有关联的日期,如果日期没有被关联,则相当于日历中的所有日期。5C表示在日期字段中表示5日以后的第1天,1C在星期字段的中相当于星期日后的第1天。
【Cron表达式的例子】
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2: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 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
" */5 * * * * ? " 每隔5秒执行一次
" 0 */1 * * * ? " 每隔1分钟执行一次
" 0 0 23 * * ? " 每天23点执行一次:
" 0 0 1 * * ? " 每天凌晨1点执行一次:
" 0 0 1 1 * ? " 每月1号凌晨1点执行一次:
" 0 0 23 L * ? " 每月最后一天23点执行一次:
" 0 0 1 ? * L " 每周星期天凌晨1点实行一次:
" 0 26,29,33 * * * ? " 在26分、29分、33分执行一次:
" 0 0 0,13,18,21 * * ? " 每天的0点、13点、18点、21点都执行一次:
" 0 0/5 * * * ? " 每隔5分钟执行一次:
【工程截图】

【CronJob.java】
package com.higgin.cron; import java.util.Date; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; public class CronJob implements Job{ public CronJob() {
System.out.println("---CronJob构造方法---"); //测试每次调用是否会重新创建一个新的CronJob类
} @Override
public void execute(JobExecutionContext jobCtx) throws JobExecutionException {
System.out.println(jobCtx.getTrigger().getName()+"----任务开始执行了----"+(new Date()));
} }
【CronTriggerRunner.java】
package com.higgin.cron; import java.text.ParseException; import org.quartz.CronExpression;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory; public class CronTriggerRunner {
public static void main(String[] args) {
try{
JobDetail jobDetail = new JobDetail("job1_2","jGroup1",CronJob.class); CronTrigger cronTrigger = new CronTrigger("trigger1_2","tGroup1");
CronExpression cronExp = new CronExpression("0/5 * * * * ?");//从0秒开始,每隔5秒执行一次
cronTrigger.setCronExpression(cronExp); SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler(); scheduler.scheduleJob(jobDetail, cronTrigger);
scheduler.start(); } catch (ParseException e) {
e.printStackTrace();
}catch (SchedulerException e) {
e.printStackTrace();
}
}
}
【运行结果】

03_CronTrigger的更多相关文章
随机推荐
- Python学习【第五篇】:面向对象及相关
面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关 一.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 1 2 3 4 5 6 c ...
- JUnit4.13环境配置
Junit 4.13环境配置 JUnit是一个强大的单元测试工具.它可以针对某一个特定类的所有方法进行精确打击.这个东西具体怎么使用,留在以后说.这次给大家说说idea下配置JUnit环境的方法. 1 ...
- vscode 遇到设置问题
// 控制是否在新窗口中打开文件. // - default: 除了从软件内部选择的文件 (如,从“文件”菜单选择),其他所有文件都将在新窗口中打开 // - on: 文件将在新窗口中打开 // - ...
- python学习之路---day25( 网络编程基础和初识socket)
基本网络知识和初识socket一:基本知识 网线:传输电信号 集线器:将所有连接到集线器的网络设备连通起来 交换机: 升级版的集线器 网卡:接受电信号 MAC地址:物理地址: 8C-88-4B-88- ...
- Karma+Jasmine测试环境搭建
1.如果你还没安装node的话,去这里下载:http://nodejs.cn/download/,选择跟你电脑匹配的并进行安装,一路next下来就行,路径最好改成自己让自己舒服的,默认的路径可能会很让 ...
- 【网络】访问控制列表(ACL)
目的:172.16.12.1可以telnet到172.16.12.254,但是无法ping通172.16.12.254 Router0配置: 配置enable密码(必须,否则无法进入特权模式): r1 ...
- 剑指offer——面试题7:重建二叉树
// 面试题7:重建二叉树 // 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输 // 入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1, // 2, ...
- PIE SDK常用滤波
1. 算法功能简介 空间域滤波实在图像空间( x. y)对输入图像应用滤波函数(核.模板)来改进输出图像的处理方法,主要包括平滑和锐化处理,强调像素与其周围相邻像素的关系,常用的方法是卷积运算. 空间 ...
- shell 命令之bind,enable,ulimit
1.bind 在shell中,内建(builtin)命令bind,格式如下: bind [-m keymap] [-lpsvPSVX] bind [-m keymap] [-q function] [ ...
- Python 字典的取值
不能用.取值 .是获取属性或方法 只能用中括号或者get方法 中括号和get中可以放字符串或者变量 get与[]的区别在于当key不存在,get不会报错,而且get可以设置取不到值时返回的默认值.