Quartz API 中几个重要的元素
名称 | 作用 |
---|---|
Scheduler | 调度任务的执行 |
Job | 你的任务需要实现的接口,执行调度任务时,Scheduler会执行此接口的execute方法 |
JobDetail | 定义Jobs的实例,里面包含了Job的所有信息:名称、所属的组,Job的类等 |
Tigger | 任务的触发器,由它来定义计划,规定Job何时被触发执行 |
我们可以这么理解,Tigger 规定了何时触发你自己定义在 Job 中的任务,而最后 Scheduler 来管理所有的 Jobs 和 Tigger
Scheduler
Scheduler 生命周期是从 SchedulerFactory 创建它开始,直到 Scheduler 调用 shutdown 方法时结束;
Scheduler 被创建后,可以增加、删除和列举 Job 和 Tigger,以及执行其他调度相关操作(如暂停 Tigger)但是,Scheduler 只有在调用 start() 方法后才会真正的触发 tirgger。
Job
一个 job 就是一个实现了 Job接口的类,该接口只有一个方法
package org.quartz;
public interface Job {
public void execute(JobExecutionContext context)
throws JobExecutionException;
}
当 job 的一个 tigger 被触发后,execute() 方法会被 Scheduler 的一个工作线程调用;
JobDetail
你定义了一个实现 Job 接口的类,这个类仅仅表明该 job 需要完成什么类型的任务,除此之外,Quartz 还需要知道 Job 实例所包含的属性,这将由 JobDetail 类来完成。
Trigger
Trigger 用于触发 Job 的执行。当你准备调度一个 Job 的时候,你创建一个 Trigger 实例,然后设置相关的属性(后面有详细介绍)。Trigger 也有一个相关联的 JobDataMap,用于给 Job 传递一些参数。Quartz 中自带了各种不同类型的 Trigger,最常用的主要是 SimpleTrigger 和 CronTrigger。
Key
将 Job 和 Trigger 注册到 Scheduler 时候,可以为他们设置 key,配置其身份属性。Job 和 Trigger 的 key 可以用于将 Job 和 Trigger 放到不同的分组(group)中,然后基于分组进行操作。同一个分组下的 Job 或 Trigger 名称必须唯一。