1、Job:表示一个工作,要执行的具体内容。此接口中只有一个方
void execute(JobExecutionContextcontext)
2、JobDetail
JobDetail表示一个具体的可执行的调度程序,Job是这个可执行程调度程序所要执行的内容,另外JobDetail还包含了这个任务调度的方案和策略。
3、Trigger代表一个调度参数的配置,什么时候去调。--定时器
Quartz 中五种类型的 Trigger:SimpleTrigger,CronTirgger,DateIntervalTrigger,NthIncludedDayTrigger和Calendar 类( org.quartz.Calendar)。
最常用的:
2.1.cron 方式:采用cronExpression表达式配置时间。
2.2.simple 方式:和JavaTimer差不多,可以指定一个开始时间和结束时间外加一个循环时间。
【和java API中的Timer类类似】
2.3.calendars 方式:可以和cron配合使用,用cron表达式指定一个触发时间规律,用calendar指定一个范围。
注意:cron方式需要用到的4张数据表: 【即只有corn时间表达式的方式才会向表插入数据】
qrtz_triggers,qrtz_cron_triggers,qrtz_fired_triggers,qrtz_job_details
1.1.qrtz_blob_triggers: 以Blob类型存储的触发器。
1.2.qrtz_calendars:存放日历信息, quartz可配置一个日历来指定一个时间范围。
1.3.qrtz_cron_triggers:存放cron类型的触发器。
1.4.qrtz_fired_triggers:存放已触发的触发器。
1.5.qrtz_job_details:存放一个jobDetail信息。
1.6.qrtz_job_listeners:job**监听器**。
1.7.qrtz_locks: 存储程序的悲观锁的信息(假如使用了悲观锁)。
1.8.qrtz_paused_trigger_graps:存放暂停掉的触发器。
1.9.qrtz_scheduler_state:调度器状态。
1.10.qrtz_simple_triggers:简单触发器的信息。
1.11.qrtz_trigger_listeners:触发器监听器。
1.12.qrtz_triggers:触发器的基本信息。
4、Scheduler代表一个调度容器,一个调度容器中可以注册多个JobDetail和Trigger。当Trigger与JobDetail组合,就可以被Scheduler容器调度了
从上面简图可以看出各概念之间的关系一个job可以被多个Trigger 绑定,但是一个Trigger只能绑定一个job!
可以写个小案例来初步了解下quartz:
思路:1建一个任务类implements Job接口,作为具体的任务执行逻辑。
class myjob implements Job{
@Override
public void execute(JobExecutionContext context)throws JobExecutionException {
//具体的任务逻辑
System.out.println("实验quartz,每隔多少秒打印一次");
}
}
2:测试类里面进行任务调度,首先生成JobDetail。。。。
。。。待后续
网友评论