`
John_Kong19
  • 浏览: 271458 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Quartz入门使用

阅读更多
简单的任务管理类



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实例,quartz入门例子

    在 myeclipse6.0.1下调试成功可直接运行的spring的quartz的例子,很适合刚接触quartz调度学习。

    quartz入门到精通

    定时器框架学习资料,入门手册,新手专用!帮你快速入门开发搭建自己的定时器框架环境

    Quartz框架快速入门

    Quartz框架快速入门Quartz框架快速入门

    Quartz入门学习(真丶入门)

    Quartz入门Demo,栗子全,注释详细。还有Spring结合的demo,一共两个Demo外加Quartz开发资料,绝对超值。欢迎大家共同交流。

    Quartz定时器从入门到进阶

    Quartz定时器从入门到进阶,详细介绍Quartz定时器API和使用示例。

    quartz入门共3页.pdf.zip

    quartz入门共3页.pdf.zip

    quartz入门例子,spring集成配置使用

    Spring集成quartz跑定时任务实例 自己写的例子并为实现job 有测试的主函数,请参考...springCon.quartz文件夹下 为对上诉博客理解透彻 结合spring看其配置的相关信息 就可以明白。

    Quartz详细入门教程

    非常详细的Quartz详细入门教程。新手值得一看,高手请忽略。

    quartz scheduler 入门教程

    quartz scheduler getting started 的翻译

    Quartz详细入门教程.zip

    Quartz详细入门教程.zip

    Quartz中文入门教程

    Quartz中文入门教程 前言 Quartz让任务调度简单 Quartz的发展史 上手Quartz Quartz内部架构 作业 作业管理和存储 有效作业存储 作业和触发器 调度一个作业 用调度器(Scheduler)调用你的作业 编程调度...

    Quartz如何从入门到精通.pdf

    Quartz如何从入门到精通

    Quartz入门到精通 中文WORD版.rar

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

    Quartz 框架快速入门

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

    Quartz2.2.1入门实例

    Quartz概述及入门实例,具体过程和效果看博文 http://blog.csdn.net/evankaka/article/details/45361469

    quartz指南,Quartz 工程

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

    Quartz入门教程

    Quartz入门教程,快如上手,讲解明了易懂

    Quartz框架快速入门.pdf

    Quartz框架快速入门.pdf

Global site tag (gtag.js) - Google Analytics