quartz任务调度框架的简单使用
前言
最近做了一个任务调度的功能,使用的是quartz框架,非常简单易用。
正题
简介
Quartz是一个完全由java编写的开源作业调度框架,它可以与J2EE与J2SE应用程序相结合也可以单独使用。
说简单些,就是它可以定时的调用你的任务(任务里面可以写你自己的逻辑或者调用你其他的模块或流程)。
简单应用
quartz应用非常简单,搭好环境后只需要写一个实现job接口的实现类即可。
1、环境搭建
新建一个java项目,引入以下jar包:
quartz2.1.1.jar(这个jar包会用到下面几个jar)
Log4j-1.2.16.jar
Slf4j-api-1.6.1.jar
Slf4j-log4j12-1.6.1.jar
2、新建一个任务类(实现job接口)
MyJob.java:(放在job包下)
package job;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;public class MyJob implements Job {@Overridepublic void execute(JobExecutionContext arg0) throws JobExecutionException {System.out.println("我的任务");}}3、新建一个测试类
TestJob.java:
import static org.quartz.CronScheduleBuilder.cronSchedule;import static org.quartz.JobBuilder.newJob;import static org.quartz.TriggerBuilder.newTrigger;import job.MyJob;import org.quartz.CronTrigger;import org.quartz.JobDetail;import org.quartz.JobKey;import org.quartz.Scheduler;import org.quartz.SchedulerException;import org.quartz.SchedulerFactory;import org.quartz.impl.StdSchedulerFactory;public class TestJob {private static Scheduler sched = null;/** * @param args * @throws SchedulerException */public static void main(String[] args) throws SchedulerException {TestJob t = new TestJob();t.useJob();t.addJob("myjob1", "5 * * ? * *", MyJob.class);//启动任务,每隔5s执行一次MyJob任务//t.deleteJob("myjob1");//停止任务}/** * 启动Schedule * @throws SchedulerException */public void useJob() throws SchedulerException{SchedulerFactory sf = new StdSchedulerFactory(); try {sched = sf.getScheduler();sched.start();} catch (SchedulerException e) {e.printStackTrace();}}/** * 任务中添加作业 * @param jobName 任务名称,可以自己命名 * @param spaceTime corn表达式,调用的时间,例如“5 * * ? * *” * @param clazz job实现类 */public void addJob(String jobName,String spaceTime,Class clazz){String groupName = jobName;JobDetail jobs = newJob(clazz).withIdentity(jobName,groupName).build();CronTrigger trigger; try {if(sched.isShutdown()){sched.start();}trigger = newTrigger().withIdentity(jobName+groupName, groupName).withSchedule(cronSchedule(spaceTime)).build();sched.scheduleJob(jobs, trigger);} catch (Exception e) {e.printStackTrace();new Exception(e);} }/** * 在任务中删除改作业 * @param jobName */public void deleteJob(String jobName){String groupName = jobName;try {if(sched.isShutdown()){sched.start();}else{JobKey key = new JobKey(jobName,groupName);sched.deleteJob(key);}} catch (SchedulerException e) {e.printStackTrace();new Exception(e);}}}4、运行结果:

quartz整个的使用很简单,唯一不太好理解的就是它的corn表达式,我简单说一下,corn表达式一般有六个(年份可以不写),依次是:秒分 时天 星期月( 年份);注意每一个时间间隔中间都有一个空格,不标明的可以使用*号,比如每隔5秒执行一次就是“5 * * ? * *",详细的解释可见http://blog.csdn.net/kkdelta/article/details/7238581
附件源码下载