二:Quartz 中重要的家族成员

吃可爱长大的小学妹 提交于 2019-12-04 05:05:26

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;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

当 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 名称必须唯一。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!