quartz 2.x学习使用
来源:互联网 发布:七天网络查分登陆入口w 编辑:程序博客网 时间:2024/06/08 19:08
Quartz API
Quartz API核心接口有:
Scheduler – 与scheduler交互的主要API,是运行job的容器;
Job – 你通过scheduler执行任务,你的任务类需要实现的接口;
JobDetail – 定义Job的实例;
Trigger – 触发Job的执行;
JobBuilder – 定义和创建JobDetail实例的接口;
TriggerBuilder – 定义和创建Trigger实例的接口;
Scheduler在使用之前需要实例化。一般通过SchedulerFactory来创建一个实例。
Scheduler的生命期,从SchedulerFactory创建它时开始,到Scheduler调用shutdown()方法时结束;Scheduler被创建后,可以增加、删除和列举Job和Trigger,以及执行其它与调度相关的操作(如暂停Trigger)。但是,Scheduler只有在调用start()方法后,才会真正地触发trigger(即执行job),
JobDetail对象由Quartz客户端在Job被加入到scheduler时创建。它包含了Job的各种设置属性以及一个JobDataMap对象,这个对象被用来存储给定Job类实例的状态信息。Trigger对象被用来触发job的执行。你希望将任务纳入到进度,要实例化一个Trigger并且“调整”它的属性以满足你想要的进度安排。Triggers也有一个JobDataMap与之关联,这非常有利于向触发器所触发的Job传递参数。Quartz打包了很多不同类型的Trigger,但最常用的Trigge类是SimpleTrigger和CronTrigger。
SimpleTrigger用来触发只需执行一次或者在给定时间触发并且重复N次且每次执行延迟一定时间的任务。
CronTrigger按照日历触发,例如“每个周五”,每个月10日中午或者10:15分。
为什么要分为Jobs和Triggers?
jobs可以被创建并且存储在job scheduler中,而不依赖于trigger,而且,很多triggers可以关联一个job.
另外的好处就是这种“松耦合”能使与日程中的Job相关的trigger过期后重新配置这些Job, 这样以后就能够重新将这些Job纳入日程而不必重新定义它们。这样就可以更改或者替换trigger而不必重新定义与之相连的job标识符。
简单实践
建立一个Java Project,引入包
1、建立Job类
package quartz.job;import java.text.SimpleDateFormat;import java.util.Date;import org.quartz.Job;import org.quartz.JobDataMap;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;public class MyJob implements Job { @Override public void execute(JobExecutionContext arg0) throws JobExecutionException { JobDataMap data = arg0.getMergedJobDataMap(); System.out.println("MyJob " + new SimpleDateFormat("yyyy-mm-dd HH:mm:ss") .format(new Date()) + " someProp ---> " + data.getString("someProp")); }}
2、构建运行程序
package quartz.main;import org.quartz.JobBuilder;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.SchedulerFactory;import org.quartz.SimpleScheduleBuilder;import org.quartz.Trigger;import org.quartz.TriggerBuilder;import org.quartz.impl.StdSchedulerFactory;import quartz.job.MyJob;public class Main { public static void main(String[] args) throws Exception { SchedulerFactory sf = new StdSchedulerFactory(); Scheduler scheduler = sf.getScheduler(); //构建scheduler scheduler.start(); //构造JobDetail JobDetail jobDetail = JobBuilder.newJob(MyJob.class) //加入自己的 Job .withIdentity("myJob", "group1") // name "myJob", group "group1" .build(); // Trigger the job to run now, and then every 3 seconds Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("myTrigger", "group1") .startNow() .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(3) //时间间隔// .repeatForever() //一直重复 .withRepeatCount(5)) //重复5次,启动之后会立即执行一次,所以实际执行6次 .build(); scheduler.scheduleJob(jobDetail, trigger); }}
执行结果
MyJob 2016-36-22 14:36:01 someProp —> null
MyJob 2016-36-22 14:36:04 someProp —> null
MyJob 2016-36-22 14:36:07 someProp —> null
MyJob 2016-36-22 14:36:10 someProp —> null
MyJob 2016-36-22 14:36:13 someProp —> null
MyJob 2016-36-22 14:36:16 someProp —> null
- quartz 2.x学习使用
- Quartz 使用(2.x版本)
- Quartz 2.x 与老版本使用比较
- 学习使用quartz
- quartz学习和使用
- Quartz学习之Lesson1-使用Quartz
- Web项目中使用Spring 3.x + Quartz 2.x实现作业调度详解
- Web项目中使用Spring 3.x + Quartz 2.x实现作业调度详解
- Web项目中使用Spring 3.x + Quartz 2.x实现作业调度详解
- Web项目中使用Spring 3.x + Quartz 2.x实现作业调度详解
- quartz的简单使用-基于2.X(一)【基本使用】
- quartz的简单使用-基于2.X(二)【与框架的整合】
- quartz-2.x Cron表达式参考
- quartz 2.2.x 源码学习 基本执行流程分析
- java 调用Quartz 不同版本使用分析 1.6x 、1.7x、1.8x
- Quartz 框架 教程(中文版)2.2.x 之第一课 开始使用Quartz框架
- Spring框架中的Quartz学习使用
- EasyTouch5.X使用学习
- opencv查找轮廓---cvFindContours && cvDrawCountours 用法及例子
- vs2010安装svn插件及简单使用
- C++中两个类互相引用的解决
- Spring基础知识汇总
- 如何搭建CSI环境
- quartz 2.x学习使用
- java线程池
- Linux内核之ioctl
- NSArray 数组排序 block
- [IOS]二维曲线图表
- [ssh新闻发布系统二] 读取新闻
- for循环使用之tips
- XCTest 断言总结
- POJ 1328 Radar Installation