quartz是业界领先的免费的一个任务调度框架。接下来我们会分成三遍文章来讲解它。分别是:quartz基础概念、quartz基础架构、quartz源码解析。这一节我们讲解quartz基础概念。
1 Job:这是quartz的任务接口。Job来决定了任务是干什么的。Job暴露了一个接口execute,这里是我们写我们的任务逻辑的地方。
2 JobDetail:这也是quartz的一个接口,它其中存放了Job.class和Job的一些描述性信息,例如Job的名字、组名等。
2 Trigger:这是quartz的触发器。它决定了绑定的JobDetail什么时候执行,就是决定任务的执行的时间规则。
3 Calender是quartz的日历接口。它决定绑定的任务(JobDetails)什么时候不执行。Trigger是决定什么时候执行。二者可以配合使用。例如每月一号执行,但是1月1号不执行。
4 JobStore:这是quartz暴露的一个接口,它用来存放JobDetail和Trigger的对应关系。
5 Scheduler:这是quartz的调度器。它的核心作用就是根据Trigger和Calender来调度JobDetail。
6 JobListener:这是针对JobDetail的一个listener,它暴露了三个方法用来在任务执行之前、任务执行之后、Trigger决定执行却被JobListener否决这三种情况下分别做点什么。这个接口由Scheduler来调度(基本用不着)。
7 TriggerListener:这是针对Trigger的一个Listener,它会在Trigger执行前后的各个时机做一些事情(基本用不着)。
8 SchedulerListener:这是针对Scheduler的一个接口,用来在Job执行完后、暂停、Trigger永不再用、暂停后做点东西。
9 ThreadPool:这是quartz暴露的一个线程池接口。线程池是任务执行的基础。在并发任务下,每个任务启用一个线程,如果线程池中的线程已经用完,再来任务时需要等待,直到有线程可用。如果等待时间过长,超过了org.quartz.jobStore.misfireThreshold设置的时间,任务不再执行。