Quartz学习 之 Jobs 和 Triggers
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Quartz学习 之 Jobs 和 Triggers相关的知识,希望对你有一定的参考价值。
一个任务是一个实现了 Job 接口的类。和下面展示一样,Job接口只有一个方法。
package org.quartz; public interface Job { public void execute(JobExecutionContext context) throws JobExecutionException; }
当一个 Job 的触发器被触发, 调度器就会从线程池中拿一个线程来调用 execute(..)方法。 方法有一个参数 JobExecutionContext context,通过这个参数可以获取Job运行时的信息,例如: 调度器执行它的一个处理、Job的JobDetail的对象等等。
Quartz 客户端在添加job到调度器的时候,JobDetail的实例就被创建了。这个对象有各种各样的属性,用来配置Job。而且还有一个 JobDataMap ,用来保存Job 类的实例的状态信息。JobDetail对象可以构造出 Job 实例。
Trigger 对象可以触发Job的执行。当你要调度一个Job,你需要初始化一个Trigger对象,并且根据你的需求设置你所需要的属性。
Trigger 也有JobDataMap , 触发器被触发,JobDataMap 可以很好的 Pass 参数给Job。Quartz 提供了一些很有用的触发器类型,但是最常用的触发器类型有 SimpleTrigger 和 CronTrigger。
- SimpleTrigger : 如果你需要在某一个时间的时刻执行一次,或者 你需要在某一个时间的时刻执行一次(n次)。
- CronTrigger :如果你想象日历上时间计划来执行,譬如 每天早上5点都执行一次。
为什么会有 Jobs 和 Triggers? 很多 任务调度器都没有把 Jobs 和 Triggers 的概念分开。一些调度器 把 Job 简单的作为一个执行时间,以及一些小的Job标识。其他的一些调度器把 Jobs 和 Triggers 的概念混淆在一起。Quartz的设计,把 执行的计划 和 具体的业务工作 分开了。这样会很好的。
举一个例子,你可以创建一个Job,并且把它保存在 Job的调度器里面。这样的话,你就可以将这个Job 关联到很多的 Trigger 中。例外一个好处就是实现了解耦。
以上是关于Quartz学习 之 Jobs 和 Triggers的主要内容,如果未能解决你的问题,请参考以下文章