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 中。例外一个好处就是实现了解耦。

转载于:https://www.cnblogs.com/aDiot/p/5333262.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值