首先创建SchedulerFactory对象,因为SchedulerFactory是一个接口,一般可以用他的一个实现类
StdSchedulerFactory
ScheDulerFactory scheDulerFactory = new StdSchedulerFactory();
接着是创建JobDetail ;
JobDetail jobDetail = new JobDetail("jobName" , "jobGroup" , Class) ;
分别是任务的名,任务的组,需要执行的任务class,这个class必须是实现quartz.的job接口,接口下的execute方法就是执行的任务,比如
pulbic class mainJbo implements Job{
public void execute(){
dosomething... ;
}
}
那么传入参数的的Class就应该是mainJob.class
接着就需要定义触发器,也就是什么时候触发
CronTrigger trigger = new CronTrigger("jobName" ,"triggerGroup");
trigger.setCronExpression(time);
这里的时间格式是一个字符串,具体的格式可以参考
http://dwj147258.iteye.com/blog/2350795中的时间规则配置
最后启动
Scheduler scheduler = scheDulerFactory.getScheduler();
scheduler.scheduleJob(jobDetail ,trigger);
if(!scheduler.isShutDown()){
scheduler.start();
}
完整的创建任务代码如下:
public void startTask(){
try {
Scheduler sched = schedulerFactory.getScheduler();
Class cla = Class.forName(clazzName);
JobDetail jobDetail = JobBuilder.newJob(cla).withIdentity(new JobKey(jobName , "TASK_GROUP")).build();
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity(new TriggerKey(jobName, "TRIGGERGROUIP"))
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule(timeCron))
.build();
sched.scheduleJob(jobDetail ,trigger) ;
if(!sched.isShutdown()){
sched.start() ;
}
} catch (Exception e) {
}
}
如果要停止这一个任务调度:
Scheduler scheduler= scheDulerFactory .getScheduler();
sched.pauseTrigger("jobName", triggerGroup);// 停止触发器
sched.unscheduleJob("jobName", triggerGroup);// 移除触发器
sched.deleteJob("jobName", jobGroup);// 删除任务
End