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

    }

}

posted @ 2010-12-23 14:51  Ivan-zheng  阅读(372)  评论(0编辑  收藏  举报