Quartz学习
2015-09-28 14:03
337 查看
自己在网上了解了Quartz框架,写了个例子
1、Quartz介绍
Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。
2、任务调度实现方式比较
Timer:基于开始时间与重复间隔的任务调度(单线程执行)
Scheduler:基于开始时间与重复间隔的任务调度(多线程执行)
Quartz
:实现复杂的任务调度。
3、下载(官网下载最新版本Quartz 2.2.1)
http://www.quartz-scheduler.org/downloads
4、体系结构
Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述
概念:
scheduler:
任务调度器
trigger:
触发器,用于定义任务调度时间规则
job:
任务,即被调度的任务。作业是能够调度的可执行任务,实现org.quartz.Job接口即可。
一个job 可以被多个 trigger 关联,但是一个 trigger 只能关联一个 job。
5、例子
public classHelloJob implements Job {
@Override
publicvoid execute(JobExecutionContext context) throws JobExecutionException {
//TODO Auto-generated method stub
System.out.println("执行Job时间:"+ new Date());
}
}
import job.HelloJob;
importorg.quartz.DateBuilder;
importorg.quartz.JobBuilder;
importorg.quartz.JobDetail;
importorg.quartz.Scheduler;
importorg.quartz.SchedulerException;
importorg.quartz.SimpleScheduleBuilder;
importorg.quartz.Trigger;
importorg.quartz.TriggerBuilder;
importorg.quartz.TriggerKey;
importorg.quartz.impl.StdSchedulerFactory;
public classSimpleExample {
public void run() throws Exception {
try {
/*通过SchedulerFactory来获取一个调度器;STD:standard标准的意思 */
Scheduler scheduler =StdSchedulerFactory.getDefaultScheduler();
/* 作业、任务 */
JobDetail job =JobBuilder.newJob(HelloJob.class).withIdentity("myJobName","myJobGroup").build();
/* 触发器 */
Trigger trigger =TriggerBuilder.newTrigger()
.withIdentity(TriggerKey.triggerKey("myTrigger","myTriggerGroup"))
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).withRepeatCount(10))
.startAt(DateBuilder.futureDate(1, DateBuilder.IntervalUnit.SECOND))
.build();
scheduler.scheduleJob(job,trigger);
scheduler.start();
Thread.sleep(60*1000);
scheduler.shutdown();
} catch (SchedulerException e) {
e.printStackTrace();
}
}
public static void main(String[] args)throws Exception {
SimpleExample example = newSimpleExample();
example.run();
}
}
1、Quartz介绍
Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。
2、任务调度实现方式比较
Timer:基于开始时间与重复间隔的任务调度(单线程执行)
Scheduler:基于开始时间与重复间隔的任务调度(多线程执行)
Quartz
:实现复杂的任务调度。
3、下载(官网下载最新版本Quartz 2.2.1)
http://www.quartz-scheduler.org/downloads
4、体系结构
Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述
概念:
scheduler:
任务调度器
trigger:
触发器,用于定义任务调度时间规则
job:
任务,即被调度的任务。作业是能够调度的可执行任务,实现org.quartz.Job接口即可。
一个job 可以被多个 trigger 关联,但是一个 trigger 只能关联一个 job。
5、例子
public classHelloJob implements Job {
@Override
publicvoid execute(JobExecutionContext context) throws JobExecutionException {
//TODO Auto-generated method stub
System.out.println("执行Job时间:"+ new Date());
}
}
import job.HelloJob;
importorg.quartz.DateBuilder;
importorg.quartz.JobBuilder;
importorg.quartz.JobDetail;
importorg.quartz.Scheduler;
importorg.quartz.SchedulerException;
importorg.quartz.SimpleScheduleBuilder;
importorg.quartz.Trigger;
importorg.quartz.TriggerBuilder;
importorg.quartz.TriggerKey;
importorg.quartz.impl.StdSchedulerFactory;
public classSimpleExample {
public void run() throws Exception {
try {
/*通过SchedulerFactory来获取一个调度器;STD:standard标准的意思 */
Scheduler scheduler =StdSchedulerFactory.getDefaultScheduler();
/* 作业、任务 */
JobDetail job =JobBuilder.newJob(HelloJob.class).withIdentity("myJobName","myJobGroup").build();
/* 触发器 */
Trigger trigger =TriggerBuilder.newTrigger()
.withIdentity(TriggerKey.triggerKey("myTrigger","myTriggerGroup"))
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).withRepeatCount(10))
.startAt(DateBuilder.futureDate(1, DateBuilder.IntervalUnit.SECOND))
.build();
scheduler.scheduleJob(job,trigger);
scheduler.start();
Thread.sleep(60*1000);
scheduler.shutdown();
} catch (SchedulerException e) {
e.printStackTrace();
}
}
public static void main(String[] args)throws Exception {
SimpleExample example = newSimpleExample();
example.run();
}
}
相关文章推荐
- sendToTarget与sendMessage
- pycharm 教程(二)设置字体大小
- Android:Task Affinity:[string]
- 关于主键的小问题
- jsp中getParameter与getAttribute之间的区别
- Android:Launch Mode:[enum]
- ShopNC 的 wkchace 函数
- 基于rtmp协议 采用red5以及flowplayer的流媒体服务器搭建
- IIS7.0设置404错误页,返回500状态码
- [题解+总结]20150928
- JNI静态方法和非静态方法
- Android中xml实现效果三:圆角按钮
- Git的诞生
- 启用Rewrite让齐博CMS实现伪静态
- Xcode 7 UI 测试初窥
- 查询数据库信息(各表占用空间的情况和列表)
- Hadoop 详细安装配置指南
- pycharm 教程(一)安装和首次使用
- g711u与g729比较编码格式
- apache和tomcat三种连接方式