java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Quartz的API、Jobs和Trigger

Java框架Quartz中API、Jobs和Trigger详解

作者:mumuwei_l

这篇文章主要介绍了Java框架Quartz中API、Jobs和Trigger详解,JobDetail 对象是在将 job 加入 scheduler 时,由客户端程序(你的程序)创建的,它包含 job 的各种属性设置,以及用于存储 job 实例状态信息的 JobDataMap,需要的朋友可以参考下

Quartz API

Quartz API的关键接口是:

Job 和 Trigger

一个 job 就是一个实现了 Job 接口的类,该接口只有一个方法:

Job 接口:

  package org.quartz;

  public interface Job {

    public void execute(JobExecutionContext context)
      throws JobExecutionException;
  }

job的一个 trigger 被触发后,execute() 方法会被 scheduler 的一个工作线程调用;传递给 execute() 方法的 JobExecutionContext 对象中保存着该 job 运行时的一些信息 ,执行 job 的 scheduler 的引用,触发 job 的 trigger 的引用,JobDetail 对象引用,以及一些其它信息。

JobDetail 对象是在将 job 加入 scheduler 时,由客户端程序(你的程序)创建的。它包含 job 的各种属性设置,以及用于存储 job 实例状态信息的 JobDataMap。

Trigger 用于触发 Job 的执行。当你准备调度一个 job 时,你创建一个 Trigger 的实例,然后设置调度相关的属性。Trigger 也有一个相关联的 JobDataMap,用于给 Job 传递一些触发相关的参数。Quartz 自带了各种不同类型的 Trigger,最常用的主要是 SimpleTrigger 和 CronTrigger。

SimpleTrigger 主要用于一次性执行的 Job(只在某个特定的时间点执行一次),或者 Job 在特定的时间点执行,重复执行 N 次,每次执行间隔T个时间单位。CronTrigger 在基于日历的调度上非常有用,如“每个星期五的正午”,或者“每月的第十天的上午 10:15”等。

为什么既有 Job,又有 Trigger 呢?

例如,Job 被创建后,可以保存在 Scheduler 中,与 Trigger 是独立的,同一个 Job可以有多个 Trigger;

这种松耦合的另一个好处是,当与 Scheduler 中的 Job 关联的 trigger 都过期时,可以配置 Job 稍后被重新调度,而不用重新定义 Job;

还有,可以修改或者替换 Trigger,而不用重新定义与之关联的 Job。

Key

将 Job 和 Trigger 注册到 Scheduler 时,可以为它们设置 key,配置其身份属性。

Job 和 Trigger 的 key(JobKey 和 TriggerKey)可以用于将 Job 和 Trigger 放到不同的分组(group)里,然后基于分组进行操作。

同一个分组下的 Job 或 Trigger 的名称必须唯一,即一个 Job 或 Trigger 的 key 由名称(name)和分组(group)组成。

到此这篇关于Java框架Quartz中API、Jobs和Trigger详解的文章就介绍到这了,更多相关Quartz的API、Jobs和Trigger内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文