首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Quartz的简略使用

2012-12-26 
Quartz的简单使用最近工作需要学习quartz,那么必须首先了解三个概念:调度器:负责调度作业和触发器;触发器:

Quartz的简单使用

最近工作需要学习quartz,那么必须首先了解三个概念:
调度器:负责调度作业和触发器;
触发器:设置作业执行的时间、参数、条件等;(简单触发器和Cron触发器)
作业:定时任务内容,被执行的程序;
下载必要的jar包,直接去
官网下载 (http://www.opensymphony.com/quartz/download.action)
,将quartz-x.x.x.jar 和core 和/或 optional 文件夹中的 jar 文件放在项目的文件夹或项目的类路径中
Quartz的几个核心的接口和类为:
Job接口:自己写的“定时程序”实现此接口的void execute(JobExecutionContext arg0)方法,Job还有一类为有状态的StatefulJob接口,如果我们需要在上一个作业执行完后,根据其执行结果再进行下次作业的执行,则需要实现此接口。
Trigger抽象类:调度类(Scheduler)在时间到时调用此类,再由trigger类调用指定的定时程序。
Quertz中提供了两类触发器为:SimpleTrigger,CronTrigger。前者用于实现比较简单的定时功能,例如几点开始,几点结束,隔多长时间执行,共执行多少次等,后者提供了使用表达式来描述定时功能,因此适用于比较复杂的定时描述,例如每个月的最后一个周五,每周的周四等。
JobDetail类:具体某个定时程序的详细描述,包括Name,Group,JobDataMap等。
JobExecutionContext类:定时程序执行的run-time的上下文环境,用于得到当前执行的Job的名字,配置的参数等。
JobDataMap类:用于描述一个作业的参数,参数可以为任何基本类型例如String,float等,也可为某个对象的引用.
JobListener,TriggerListener接口:用于监听触发器状态和作业扫行状态,在特写状态执行相应操作。
JobStore类:在哪里执行定进程序,可选的有在内存中,在数据库中。

?

创建自定义Job类:

??

创建相关的触发器并调用相关的job:

?


?

package com.easyway.app.simple;import static org.quartz.CronScheduleBuilder.cronSchedule;import static org.quartz.JobBuilder.newJob;import static org.quartz.TriggerBuilder.newTrigger;import java.text.ParseException;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;/** * 創建Quartz的job任務 *  * 触发器和调度器 * @author longgangbai * */public class SimpleQuartzMain {/** *  * @param args * @throws ParseException * @throws SchedulerException */public static void main(String[] args) throws ParseException, SchedulerException { //通过SchedulerFactory来获取一个调度器    SchedulerFactory schedulerFactory = new StdSchedulerFactory();    //创建一个调度对象    Scheduler scheduler = schedulerFactory.getScheduler();        //引进作业程序    JobDetail jobDetail = newJob(SimpleQuartzJob.class)    //job的详细信息标识    .withIdentity("jobDetail-s1", "jobDetailGroup-s1")    //创建job的详细信息    .build();          //new一个触发器    CronTrigger simpleTrigger =  newTrigger()    //设置触发器的标签    .withIdentity("simpleTrigger", "triggerGroup-s1")    //设置触发器的执行cron表达式    .withSchedule(cronSchedule("0/20 * * * * ?"))    //开始执行任务    .startNow()    //构建相关的触发器    .build();    //设置作业启动时间    long ctime = System.currentTimeMillis();     //设置作业执行优先级默认为5    //simpleTrigger.setPriority(10);    //作业和触发器设置到调度器中    scheduler.scheduleJob(jobDetail, simpleTrigger);        //启动调度器    scheduler.start();}}

?

热点排行