首先创建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