`
maosheng
  • 浏览: 550558 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Quartz使用经典实现

    博客分类:
  • Java
阅读更多
package com.maosheng.test;

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; 

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

}


package com.maosheng.test;

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+"★★★★★★★★★★★"); 
    } 
 


package com.maosheng.test;

import java.text.SimpleDateFormat; 
import java.util.Date; 


public class QuartzTest {

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

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics