`

Quartz使用-入门使用

 
阅读更多

Quartz使用-入门使用 

很久没有用Quartz了,居然忘记如何使用了,这里赶紧记录下
Quartz就不说明了,直接上代码
注:这里使用的是Quartz1.5.2版本(包:quartz-1.5.2.jar)

简单的任务管理类


import java.text.ParseException;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;

/** *//**
 * @Title:Quartz管理类
 * 
 * @Description:
 * 
 * @Copyright: 
 * @author zz  2008-10-8 14:19:01
 * @version 1.00.000
 *
 */
public class QuartzManager {
   private static SchedulerFactory sf = new StdSchedulerFactory();
   private static String JOB_GROUP_NAME = "group1";
   private static String TRIGGER_GROUP_NAME = "trigger1";
  
   
   /** *//**
    *  添加一个定时任务,使用默认的任务组名,触发器名,触发器组名
    * @param jobName 任务名
    * @param job     任务
    * @param time    时间设置,参考quartz说明文档
    * @throws SchedulerException
    * @throws ParseException
    */
   public static void addJob(String jobName,Job job,String time) 
                               throws SchedulerException, ParseException{
       Scheduler sched = sf.getScheduler();
       JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, job.getClass());//任务名,任务组,任务执行类
       //触发器
       CronTrigger  trigger = 
            new CronTrigger(jobName, TRIGGER_GROUP_NAME);//触发器名,触发器组
       trigger.setCronExpression(time);//触发器时间设定
       sched.scheduleJob(jobDetail,trigger);
       //启动
       if(!sched.isShutdown())
          sched.start();
   }
   
   /** *//**
    * 添加一个定时任务
    * @param jobName 任务名
    * @param jobGroupName 任务组名
    * @param triggerName  触发器名
    * @param triggerGroupName 触发器组名
    * @param job     任务
    * @param time    时间设置,参考quartz说明文档
    * @throws SchedulerException
    * @throws ParseException
    */
   public static void addJob(String jobName,String jobGroupName,
                             String triggerName,String triggerGroupName,
                             Job job,String time) 
                               throws SchedulerException, ParseException{
       Scheduler sched = sf.getScheduler();
       JobDetail jobDetail = new JobDetail(jobName, jobGroupName, job.getClass());//任务名,任务组,任务执行类
       //触发器
       CronTrigger  trigger = 
            new CronTrigger(triggerName, triggerGroupName);//触发器名,触发器组
       trigger.setCronExpression(time);//触发器时间设定
       sched.scheduleJob(jobDetail,trigger);
       if(!sched.isShutdown())
          sched.start();
   }
   
   /** *//**
    * 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名)
    * @param jobName
    * @param time
    * @throws SchedulerException
    * @throws ParseException
    */
   public static void modifyJobTime(String jobName,String time) 
                                  throws SchedulerException, ParseException{
       Scheduler sched = sf.getScheduler();
       Trigger trigger =  sched.getTrigger(jobName,TRIGGER_GROUP_NAME);
       if(trigger != null){
           CronTrigger  ct = (CronTrigger)trigger;
           ct.setCronExpression(time);
           sched.resumeTrigger(jobName,TRIGGER_GROUP_NAME);
       }
   }
   
   /** *//**
    * 修改一个任务的触发时间
    * @param triggerName
    * @param triggerGroupName
    * @param time
    * @throws SchedulerException
    * @throws ParseException
    */
   public static void modifyJobTime(String triggerName,String triggerGroupName,
                                    String time) 
                                  throws SchedulerException, ParseException{
       Scheduler sched = sf.getScheduler();
       Trigger trigger =  sched.getTrigger(triggerName,triggerGroupName);
       if(trigger != null){
           CronTrigger  ct = (CronTrigger)trigger;
           //修改时间
           ct.setCronExpression(time);
           //重启触发器
           sched.resumeTrigger(triggerName,triggerGroupName);
       }
   }
   
   /** *//**
    * 移除一个任务(使用默认的任务组名,触发器名,触发器组名)
    * @param jobName
    * @throws SchedulerException
    */
   public static void removeJob(String jobName) 
                               throws SchedulerException{
       Scheduler sched = sf.getScheduler();
       sched.pauseTrigger(jobName,TRIGGER_GROUP_NAME);//停止触发器
       sched.unscheduleJob(jobName,TRIGGER_GROUP_NAME);//移除触发器
       sched.deleteJob(jobName,JOB_GROUP_NAME);//删除任务
   }
   
   /** *//**
    * 移除一个任务
    * @param jobName
    * @param jobGroupName
    * @param triggerName
    * @param triggerGroupName
    * @throws SchedulerException
    */
   public static void removeJob(String jobName,String jobGroupName,
                                String triggerName,String triggerGroupName) 
                               throws SchedulerException{
       Scheduler sched = sf.getScheduler();
       sched.pauseTrigger(triggerName,triggerGroupName);//停止触发器
       sched.unscheduleJob(triggerName,triggerGroupName);//移除触发器
       sched.deleteJob(jobName,jobGroupName);//删除任务
   }
}


测试工作类

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class TestJob implements Job {

    public void execute(JobExecutionContext arg0) throws JobExecutionException {
        // TODO Auto-generated method stub
        System.out.println("★★★★★★★★★★★");
    }

}


测试类

public class QuartzTest {

    /** *//**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        TestJob job = new TestJob();
        String job_name ="11";
        try {
            System.out.println("【系统启动】");
            QuartzManager.addJob(job_name,job,"0/5 * * * * ?");
            
            Thread.sleep(10000);
            System.out.println("【修改时间】");
            QuartzManager.modifyJobTime(job_name,"0/10 * * * * ?");
            Thread.sleep(20000);
            System.out.println("【移除定时】");
            QuartzManager.removeJob(job_name);
            Thread.sleep(10000);
            
            System.out.println("\n【添加定时任务】");
            QuartzManager.addJob(job_name,job,"0/5 * * * * ?");
            
        }  catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

分享到:
评论

相关推荐

    Quartz.NET-2.1.2官方包

    - **readme.txt**:通常包含快速入门指南和重要注意事项,帮助用户了解如何开始使用Quartz.NET。 3. **库和文档**: - **lib**:这个目录可能包含了Quartz.NET的库文件,如DLLs,供开发者在项目中引用。 - **doc...

    quartz-2.1.6.zip

    QUICK-START.html 是Quartz的快速入门指南,它通常会提供关于如何安装、配置和启动Quartz的基本步骤,以及如何创建和执行第一个作业的示例。通过阅读这份文档,开发者能够迅速理解Quartz的工作原理,并开始自己的...

    quartz和spring-quartz

    在提供的文件中,“quartz的入门.doc”可能是Quartz的基础教程,介绍如何创建和调度Job;“spring的quartz应用.txt”可能包含Spring-Quartz的具体使用示例和注意事项;“spring-quartz-demo”可能是一个完整的示例...

    Quartz.NET-0.9.1

    6. **bin**:这个目录通常包含编译后的二进制文件,如DLL(动态链接库)和EXE(可执行文件),供应用程序引用和使用Quartz.NET。 7. **database**:这部分可能包含了与Quartz.NET作业存储相关的数据库脚本或配置...

    Quartz.NET-2.2 源码

    5. **readme.txt**: 提供了项目的基本信息和快速入门指南,包括安装、配置和使用等方面的提示。 6. **server**: 可能包含Quartz.NET服务器相关的配置和执行文件,用于部署和运行定时任务服务。 7. **bin**: 这个...

    Quartz.NET-3.0.7.zip

    通过这些文件,开发者不仅可以部署和使用Quartz.NET,还可以参与到项目的开发和贡献中,例如修复bug、添加新功能或者优化性能。Quartz.NET的灵活性和强大功能使其成为.NET开发者在需要定时任务处理时的首选工具。

    Quartz框架快速入门

    ### Quartz框架快速入门详解 #### 一、Quartz框架简介 Quartz是一个开源的作业调度框架,用于开发Java应用程序。它提供了强大的触发器(Trigger)机制用于关联作业(Job),同时还具备灵活的表达式用于配置定时...

    quartz-1.6.4.源码

    `readme.txt` 文件通常提供了快速入门指南、注意事项或者项目简介,对于初学者了解 Quartz 和如何开始使用源码非常有帮助。 通过对这些文件的分析,我们可以了解到 Quartz 1.6.4 版本的核心组成部分以及如何根据...

    quartz指南,Quartz 工程

    Quartz从入门到进阶.pdf 3:QuartzBeginnerExample一个附带的工程例子 4:quartz-1.6.1.zip Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独...

    Quartz-Job-Scheduling-Framework-中文版-V0.9.1.zip

    内容提要:除前面用编程式使用监听器外,Quartz 还支持在 quartz_jobs.xml 中以声明式使用监听器。 第七章. 实现 Quartz 监听器 (第七部分) 内容提要:调用监听方法的线程,按什么顺序调用监听方法,最后列了一些...

    quartz实例,quartz入门例子

    在这个Quartz入门例子中,可能包含了一个名为`QuarzTest`的类或配置文件,它是实际运行的入口。通过分析和运行这个例子,你可以了解到如何在Spring中配置和使用Quartz,以及如何创建和调度Job。 学习Quartz时,你...

    Quartz定时器从入门到进阶

    为了开始使用Quartz,开发者可以从OpenSymphony网站获取相关资源,如Java文档、用户指南、CVS访问权限以及论坛支持。这有助于开发者快速上手并深入了解Quartz的各种功能和配置选项。 Quartz内部架构由多个关键组件...

    Quartz如何从入门到精通.pdf

    Quartz入门到精通 Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如...

    Quartz 框架快速入门

    Quartz 框架快速入门 在前面两篇文章中简单介绍了在java应用程序中如何使用Quartz框架,这一篇中我们将看到如何在web环境下通过配置文件来完成Quartz的后台作业调度,而不必手工去创建Trigger和Scheduler

    quartz入门到精通

    ### Quartz入门到精通知识点详解 #### 一、Quartz简介与特点 Quartz是一个功能强大的开源作业调度框架,主要用于Java应用程序中。它不仅易于使用,还提供了高度的灵活性,适用于各种复杂的调度需求。Quartz支持...

    Quartz如何从入门到精通

    ### Quartz从入门到精通 #### 一、Quartz让任务调度简单 Quartz是一个功能强大的开源作业调度框架,专门设计用于Java平台上的J2SE和J2EE应用程序中。其最大的优势在于提供了一种简单而灵活的方式来管理定时任务。...

    quartz scheduler 入门教程

    quartz scheduler 入门教程 Quartz Scheduler 是一种功能丰富、开源的任务调度程序库,可以在任何 Java 程序中使用。它可以用来创建简单或者复杂的执行次数可以达成千上万的任务。任务可以是任何 Java 可以做的事情...

    JAVA定时调度框架-Quartz使用入门到精通.doc

    Quartz 是一个强大的开源作业调度框架,专为 Java 平台设计,无论是 J2SE 还是 J2EE 应用都可以使用。它的主要目的是提供一个简单易用但功能丰富的任务调度解决方案。Quartz 具备数据库支持、集群功能、插件机制、...

    Quartz框架快速入门.pdf

    要开始使用Quartz,首先需要在项目中引入必要的依赖。基础依赖是quartz-<version>.jar,这是Quartz的核心库。除此之外,根据你的需求,可能还需要其他第三方库,例如Commons Digester,它位于<QUARTZ_HOME>/lib/core...

Global site tag (gtag.js) - Google Analytics