在使用Quartz的时候,找了很多的文章都是1.x版本的,api都发生了大幅度的改变,
参考1.x版本文章:
http://www.blogjava.net/fatbear/archive/2008/10/08/233153.html
private static SchedulerFactory sf = new StdSchedulerFactory();
private final static String JOB_GROUP_NAME = "defaultGroup_";
private final static String TRIGGER_GROUP_NAME = "defaultTrigger_";
private static QuartzManager ins;
private QuartzManager(){
super();
}
public static QuartzManager instance(){
if(ins == null )
}
public void addJob(String jobName,Job job,String time)
throws SchedulerException, ParseException{
Scheduler sched = sf.getScheduler();
//任务
JobDetail jobDetail = JobBuilder.newJob(job.getClass())//任务执行类
.withIdentity(jobName,JOB_GROUP_NAME)//任务名,任务组
.build();
//触发器
CronTrigger cronTrigger = TriggerBuilder.newTrigger()
.withIdentity(jobName,TRIGGER_GROUP_NAME)
.withSchedule(CronScheduleBuilder.cronSchedule(time))
.build();
sched.scheduleJob(jobDetail,cronTrigger);
//启动
if(!sched.isShutdown())
sched.start();
}
public void addJob(String jobName,String jobGroupName,
String triggerName,String triggerGroupName,
Job job,String time)
throws SchedulerException, ParseException{
Scheduler sched = sf.getScheduler();
//任务
JobDetail jobDetail = JobBuilder.newJob(job.getClass())//任务执行类
.withIdentity(jobName,jobGroupName)//任务名,任务组
.build();
//触发器
CronTrigger cronTrigger = TriggerBuilder.newTrigger()
.withIdentity(triggerName,triggerGroupName)
.withSchedule(CronScheduleBuilder.cronSchedule(time))
.build();
sched.scheduleJob(jobDetail,cronTrigger);
//启动
if(!sched.isShutdown())
sched.start();
}
public void removeJob(String jobName)
throws SchedulerException{
Scheduler sched = sf.getScheduler();
TriggerKey tk = new TriggerKey(jobName,TRIGGER_GROUP_NAME);
sched.pauseTrigger(tk);//停止触发器
sched.unscheduleJob(tk);//移除触发器
JobKey jk = new JobKey(jobName,JOB_GROUP_NAME);
sched.deleteJob(jk);//删除任务
}
public void removeJob(String jobName,String jobGroupName,
String triggerName,String triggerGroupName)
throws SchedulerException{
Scheduler sched = sf.getScheduler();
TriggerKey tk = new TriggerKey(triggerName,triggerGroupName);
sched.pauseTrigger(tk);//停止触发器
sched.unscheduleJob(tk);//移除触发器
JobKey jk = new JobKey(jobName,jobGroupName);
sched.deleteJob(jk);//删除任务
}
public void modifyJob(String jobName,String jobGroupName,
String triggerName,String triggerGroupName,
String time)
throws SchedulerException{
Scheduler sched = sf.getScheduler();
JobKey jk = new JobKey(jobName,jobGroupName);
//任务
JobDetail jobDetail = sched.getJobDetail(jk);
removeJob(jobName);
//新触发器
CronTrigger cronTrigger = TriggerBuilder.newTrigger()
.withIdentity(triggerName,triggerGroupName)
.withSchedule(CronScheduleBuilder.cronSchedule(time))
.build();
sched.scheduleJob(jobDetail,cronTrigger);
//启动
if(!sched.isShutdown())
sched.start();
}
public void modifyJob(String jobName,String time)
throws SchedulerException{
Scheduler sched = sf.getScheduler();
JobKey jk = new JobKey(jobName,JOB_GROUP_NAME);
//任务
JobDetail jobDetail = sched.getJobDetail(jk);
removeJob(jobName);
//新触发器
CronTrigger cronTrigger = TriggerBuilder.newTrigger()
.withIdentity(jobName,TRIGGER_GROUP_NAME)
.withSchedule(CronScheduleBuilder.cronSchedule(time))
.build();
sched.scheduleJob(jobDetail,cronTrigger);
//启动
if(!sched.isShutdown())
sched.start();
}
public void removeAll() throws SchedulerException{
Collection<Scheduler> list = sf.getAllSchedulers();
Iterator<Scheduler> it = list.iterator();
while(it.hasNext()){
Scheduler sc = it.next();
if(sc != null){
sc.clear();
}
}
}
public static void main(String[] args) {
BatchUnit job = new BatchUnit();
String job_name ="test";
try {
System.out.println("【添加定时任务】");
QuartzManager.instance().addJob(job_name,job,"0/5 * * * * ?");
Thread.sleep(10000);
System.out.println("【移除定时】");
QuartzManager.instance().removeJob(job_name);
Thread.sleep(10000);
System.out.println("\n【添加定时任务】");
QuartzManager.instance().addJob(job_name,job,"0/5 * * * * ?");
Thread.sleep(10000);
System.out.println("\n【修改定时任务】");
QuartzManager.instance().modifyJob(job_name,"0/2 * * * * ?");
Thread.sleep(10000);
QuartzManager.instance().removeAll();
Thread.sleep(10000);
}
catch (Exception e) {
e.printStackTrace();
}
}
这里写上自己的测试类(已测试);
任务执行类:
package com.sinosoft.datasupply.batch;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class BatchUnit implements Job{
static Logger logger = Logger.getLogger(BatchUnit.class.getName());
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("执行任务......."+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
}
}
任务管理类:
package com.sinosoft.datasupply.batch;
import java.text.ParseException;
import java.util.Collection;
import java.util.Iterator;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzManager {
{
ins = new QuartzManager();
}
return ins;
}
任务测试类:
import com.sinosoft.datasupply.batch.BatchUnit;
import com.sinosoft.datasupply.batch.QuartzManager;
public class Test {
}