zoukankan      html  css  js  c++  java
  • quartz入门实例

    一 Quarta介绍 
    1 Quartz是什么 
    Quartz就是一个纯 Java 实现的作业调度工具,相当于数据库中的 Job、Windows 的计划任务、Unix/Linux 下的 Cron,但 Quartz 可以把排程控制的更精细. 
    2 Quartz 框架的发展历程 
    Quartz项目是由James House创立的,在1998年就有该框架最初的构思,包括作业队列的概念,使用线程池来处理作业,在2001年春天在SourceForge 上创立了该项目
    Quartz 的目录结构和内容 
    Docs Quartz 框架的JavaDoc Api 说明文档 
    Examples 多方面使用 Quartz 的例子 
    Lib Quartz 使用到的第三方包 
    quartz-jboss 提供了特定于 JBoss 特性的源代码 
    quartz-oracle 提供了特定于 Oracle 特性的源代码 
    quartz-weblogic 提供了特定于 WebLogic 特性的源代码 
    二 Quartz的应用场景 
    场景 #1: 邮件提醒和告警 
    场景 #2: 执行文件传输操作 
    场景 #3: 创建销售报表 
    三 Quarta的安装及使用 
    官网:http://www.quartz-scheduler.org/下载最新的文件,需要你注册才能下载!也可在附件中下载 
    四 了解Quartz体系结构 
    Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述 
    Quartz 调度包的两个基本单元是作业和触发器。作业是能够调度的可执行任务,触发器提供了对作业的调度. 
    调度器:调度器用于将与作业触发器关联,一个作业可关联多个触发器,这样每个触发器被可以触发的作业执行;一个触发器可用于控制多个作业,触发触发时, 
    全部作业将获得调度。Quartz的调度器由Scheduler接口体现. 
    作业:只需实现org.quartz.job接口即可.Job接口包含一个方法 execute(),execute方法体是被调度的作业体。一旦实现Job接口和execute()方法, 
    Quartz确定作业运作的时候,它将调用 execute()方法体。 
    触发器:有SimpleTrigger和CronTrigger两种类型 

     
    五 工程图片 
     
    六 具体代码如下 
    Job:是一个接口只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务,JobExecutionContext类提供了调度上下文的各种信息。Job运行时的信息保存在JobDataMap实例中 
    1 定义一个作业类: HelloJob.java 

    Java代码  收藏代码
    1. import java.util.Date;  
    2. import org.slf4j.Logger;  
    3. import org.slf4j.LoggerFactory;  
    4. import org.quartz.Job;  
    5. import org.quartz.JobExecutionContext;  
    6. import org.quartz.JobExecutionException;  
    7.   
    8. public class HelloJob implements Job {  
    9.   
    10.     private static Logger _log = LoggerFactory.getLogger(HelloJob.class);  
    11.      
    12.     public HelloJob() {  
    13.           
    14.     }  
    15.      
    16.     public void execute(JobExecutionContext context)  
    17.         throws JobExecutionException {  
    18.           
    19.         _log.error(" 咫尺天涯: " + new Date());  
    20.           
    21.     }  
    22. }  


    2 测试类 

    Java代码  收藏代码
      1. import static org.quartz.JobBuilder.newJob;  
      2. import static org.quartz.TriggerBuilder.newTrigger;  
      3. import static org.quartz.DateBuilder.*;  
      4. import java.util.Date;  
      5. import org.quartz.JobDetail;  
      6. import org.quartz.Scheduler;  
      7. import org.quartz.SchedulerFactory;  
      8. import org.quartz.Trigger;  
      9. import org.quartz.impl.StdSchedulerFactory;  
      10. import org.slf4j.Logger;  
      11. import org.slf4j.LoggerFactory;  
      12. public class SimpleExample {  
      13.   
      14.     private static Logger log = LoggerFactory.getLogger(SimpleExample.class);  
      15.   
      16.     public void run() throws Exception {  
      17.         // 通过SchedulerFactory获取一个调度器实例  
      18.         SchedulerFactory sf = new StdSchedulerFactory();      
      19.           
      20.         Scheduler sched = sf.getScheduler();  
      21.           
      22.         Date runTime = evenMinuteDate(new Date());  
      23.           
      24.         // 通过过JobDetail封装HelloJob,同时指定Job在Scheduler中所属组及名称,这里,组名为group1,而名称为job1。  
      25.         JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();  
      26.   
      27.         // 创建一个SimpleTrigger实例,指定该Trigger在Scheduler中所属组及名称。  
      28.         // 接着设置调度的时间规则.当前时间运行  
      29.         Trigger trigger = newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build();  
      30.   
      31.         // 注册并进行调度  
      32.         sched.scheduleJob(job, trigger);  
      33.   
      34.         // 启动调度器  
      35.         sched.start();  
      36.   
      37.         try {  
      38.             //当前线程等待65秒  
      39.             Thread.sleep(65L * 1000L);  
      40.         } catch (Exception e) {  
      41.               
      42.         }  
      43.           
      44.         //调度器停止运行  
      45.         sched.shutdown(true);  
      46.           
      47.         log.error("结束运行。。。。");  
      48.           
      49.     }  
      50.   
      51.     public static void main(String[] args) throws Exception {  
      52.         SimpleExample example = new SimpleExample();  
      53.         example.run();  
      54.     }  
      55. }  
  • 相关阅读:
    openldap
    Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
    Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P1567 统计天数
    Java实现 洛谷 P1567 统计天数
  • 原文地址:https://www.cnblogs.com/564085446java/p/3919540.html
Copyright © 2011-2022 走看看