Quartz 使用
在使用Quartz 前需要明白几个定义,第一就是,每个任务在都需要有调度器去调度该任务对应的触发器,然后才能按照时间表达式触发 ,执行业务代码;
一:jobDetail:具体的业务实现
二:触发器:触发业务的时间逻辑
三:调度器:负责调度触发器执行
~~~代码示例
public class QuartzTest {
public static void main(String[] args) {
try {
// DirectSchedulerFactory instance = DirectSchedulerFactory.getInstance();
// instance.createVolatileScheduler(10);
/**
* //创建一个定时器对象
*/
Scheduler scheduler= StdSchedulerFactory.getDefaultScheduler();
/**
* 创建一个jobDetail
*/
JobDetail job=JobBuilder.newJob(HelloJob.class).withIdentity("job1","group12").build();
//每5秒运行一次job
/**
* 创建一个定时触发器 trigger
*/
Trigger trigger=TriggerBuilder.newTrigger().withIdentity("trigger1","group12").startNow()
.withSchedule(CronScheduleBuilder.cronSchedule("*/5 * * * * ?")).build();
Trigger trigger2=TriggerBuilder.newTrigger().withIdentity("trigger2","group13").startNow()
.withSchedule(CronScheduleBuilder.cronSchedule("*/8 * * * * ?")).build();
// /**
// * 通过jobName和组名删除任务
// */
// scheduler.deleteJob(JobKey.jobKey("job1","group1"));
//
// /**
// * 删除当前任务的触发器
// */
// scheduler.unscheduleJob(TriggerKey.triggerKey("trigger1","group12"));
/**
* 触发执行定时触发器
*/
// scheduler.scheduleJob(job,trigger);
scheduler.scheduleJob(job,new HashSet<Trigger>(){{add(trigger);add(trigger2);}},false);
// scheduler.scheduleJob(job,trigger2);
scheduler.start();
List<String> s=scheduler.getJobGroupNames();
List<? extends Trigger> job1 = scheduler.getTriggersOfJob(JobKey.jobKey("job1","group12"));
System.out.println(job1);
System.out.println(s);
TimeUnit.SECONDS.sleep(11);
scheduler.shutdown();
} catch (Throwable e) {
e.printStackTrace();
}
}
}
/**
* Scheduler的常用方法
* 添加一个定时任务:
* Date scheduleJob(JobDetail jobDetail,Trigger trigger)
*
* 修改一个定时任务,主要是更改trigger:
* Date rescheduleJob(String triggerName, String groupName, Trigger newTrigger)
*
* 删除一个定时任务,同时也会将于该jobDetail关联的trigger一并删除:
* boolean deleteJob(String jobName,String jobGroup)
*
* 取得所有的jobDetail组
* String[] getJobGroupNames()
*
* 取得某个group下的所有的jobDetail
* String[] getJobNames(String groupName)
*
* 取得指定的jobDetail
* JobDetail getJobDetail(String jobName, String jobGroup)
*
* 取得指定的jobDetail的所有的Trigger
* Trigger[] getTriggersOfJob(String jobName, String groupName)
*
* 取得指定的Trigger
* Trigger getTrigger(String triggerName, String triggerGroup)
*/