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

  • 相关阅读:
    NDOC中文支持及入门用法
    网页代码常用小技巧
    SOCKET通讯点滴
    自动备份程序目录
    MySql.Data.dll Microsoft.Web.UI.WebControls.dll下载
    c#:获取IE地址栏中的URL
    比较好的单例登录模式(参考网友)
    FreeTextBox使用详解
    2005自定义控件显示基准线
    连接字符串大全
  • 原文地址:https://www.cnblogs.com/aDiot/p/5333262.html
Copyright © 2011-2022 走看看