侧边栏壁纸
  • 累计撰写 793 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

目 录CONTENT

文章目录

Quartz

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 177 阅读 / 962 字
温馨提示:
本文最后更新于 2022-07-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

超详细源码展示
SpirngBoot配置

job

Trigger 用来执行job

Schedule 用来管理Trigger


TestJob.java代码:

package cn.du.quartz;

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

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

/**
 * 测试工作类
 * @author dolying
 *
 */
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+"***");  
        }  
    
}


QuartzManager代码:

package cn.du.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;

/**
 * Quartz管理类
 * @author dolying
 *
 */
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 triggerGroupNme
        * @param time
        * @throws SchedulerException
        * @throws ParseException
        */
       public static void modifyJobTime(String triggerName,String triggerGroupNme,String time)
               throws SchedulerException,ParseException{
           Scheduler sched = sf.getScheduler();
           Trigger trigger = sched.getTrigger(triggerName, triggerGroupNme);
           if(trigger != null){
               CronTrigger ct = (CronTrigger)trigger;
               //修改时间
               ct.setCronExpression(time);
               //重启触发器
               sched.resumeTrigger(triggerName, triggerGroupNme);
           }
       }
       /**
        * 移除一个任务(使用默认的任务组名,触发器名,触发器组名)
        * @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 jobGroupName
        * @param jobName
        * @param triggerName
        * @param triggerGroupName
        * @throws SchedulerException
        */
       public static void removeJob(String jobGroupName,String jobName,
               String triggerName,String triggerGroupName)throws SchedulerException{
           
           Scheduler sched = sf.getScheduler();
           //停止触发器
           sched.pauseTrigger(triggerName, triggerGroupName);
           //移除触发器
           sched.unscheduleJob(triggerName, triggerGroupName);
           //删除任务
           sched.deleteJob(jobName, jobGroupName);
       }
}

Java中的main方法代码:
package cn.du.quartz;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 测试main函数
 * @author dolying
 *
 */
public class QuartzTest {

    public static void main(String[] args){
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
        Date date = new Date();
        String returnstr = dateFormat.format(date);
        
        TestJob job = new TestJob();
        String job_name="11";
        try{
            System.out.println(returnstr+"【系统启动】");
            //每2秒钟执行一次
            QuartzManager.addJob(job_name,job,"0/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("【添加定时任务】");
            QuartzManager.addJob(job_name, job, "0/5 * * * * ?");
            
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

————————————————
版权声明:本文为CSDN博主「dolyings」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fly12310/article/details/52924510

0

评论区