zoukankan      html  css  js  c++  java
  • 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 中。例外一个好处就是实现了解耦。

  • 相关阅读:
    公布一些常用的WebServices
    ARM的嵌入式Linux应用程序开发研究
    c++读写剪贴板代码
    如何破解路由器密码(CISCO)!
    用Shell扩展实现源代码统计程序(转)
    图文例解C++类的多重继承与虚拟继承
    MSDN上关于ADO示例代码
    不错的句子
    codeforces #271(div2) F. Ant colony
    [Z]CUDA中Bank conflict冲突
  • 原文地址:https://www.cnblogs.com/aDiot/p/5333262.html
Copyright © 2011-2022 走看看