您的位置:首页 > 编程语言 > Java开发

Quartz使用-入门使用(java定时任务实现)

2016-07-29 18:33 615 查看
注:这里使用的是Quartz1.6.5版本(包:quartz-1.6.5.jar)
http://blog.csdn.net/lotusyangjun/article/details/6450421/
 

[java] view
plain copy

//测试main函数  

//QuartzTest.java  

package quartzPackage;  

  

  

import java.text.SimpleDateFormat;  

import java.util.Date;  

  

public class QuartzTest {  

  

    /** *//** 

     * @param args 

     */  

    public static void main(String[] args) {  

        // TODO Auto-generated method stub  

        SimpleDateFormat DateFormat = new SimpleDateFormat("yyyyMMddHHmmss");  

        Date d = new Date();  

        String returnstr = DateFormat.format(d);          

          

        TestJob job = new TestJob();  

        String job_name ="11";  

        try {  

            System.out.println(returnstr+ "【系统启动】");  

            QuartzManager.addJob(job_name,job,"0/2 * * * * ?"); //每2秒钟执行一次  

              

//            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();  

        }  

    }  

}  

简单的任务管理类

[java] view
plain copy

//简单的任务管理类  

//QuartzManager.java  

  

package quartzPackage;  

  

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);//删除任务  

   }  

}  

 

测试工作类

[java] view
plain copy

//测试工作类  

//TestJob.java  

  

package quartzPackage;  

  

import java.text.SimpleDateFormat;  

import java.util.Date;  

  

import org.quartz.Job;  

import org.quartz.JobExecutionContext;  

import org.quartz.JobExecutionException;  

  

public class TestJob implements Job {  

    SimpleDateFormat DateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  

    Date d = new Date();  

    String returnstr = DateFormat.format(d);    

  

    public void execute(JobExecutionContext arg0) throws JobExecutionException {  

        // TODO Auto-generated method stub  

        System.out.println(returnstr+"★★★★★★★★★★★");  

    }  

  

}  

 

第三方包

通过测试。一个简单任务只需要以下几个包:commons-beanutils.jar、commons-collections.jar、commons-logging.jar、commons-digester.jar、quartz.jar即可

名称必须/备注网址
activation.jar主要是 JavaMail 要用到http://java.sun.com/products/javabeans/glasgow/jaf.html
commons-beanutils.jarhttp://jakarta.apache.org/commons/beanutils
commons-collections.jarhttp://jakarta.apache.org/commons/collections
commons-dbcp-1.1.jar是,假如用到数据库作为作业存储http://jakarta.apache.org/commons/dbcp
commons-digester.jar假如你使用了某些插件,就需要它
commons-logging.jarhttp://jakarta.apache.org/commons/logging/
commons-pool-1.1.jar http://jakarta.apache.org/commons/pool/
javamail.jar发送 e-mail 用http://java.sun.com/products/javamail/
jdbc2_0-stdext.jar是,假如用到数据库作为作业存储http://java.sun.com/products/jdbc/
jta.jar是,假如用到数据库作为作业存储http://java.sun.com/products/jta/database
quartz.jarQuart 框架核心包
servlet.jar假如使用了Servlet 容器,但容器中应该存在http://java.sun.com/products/servlet/
log4j.jar是,日志http://logging.apache.org/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: