• 定时器quartz工具类


    一、gradle配置

      // https://mvnrepository.com/artifact/org.quartz-scheduler/quartz
        compile group: 'org.quartz-scheduler', name: 'quartz', version: '2.2.3'
        // https://mvnrepository.com/artifact/org.quartz-scheduler/quartz-jobs
        compile group: 'org.quartz-scheduler', name: 'quartz-jobs', version: '2.2.3'

    二、工具类

      1 import static org.quartz.CronScheduleBuilder.cronSchedule;
      2 import static org.quartz.JobBuilder.newJob;
      3 import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
      4 import static org.quartz.TriggerBuilder.newTrigger;
      5 
      6 import java.util.Collection;
      7 import java.util.Date;
      8 import java.util.Iterator;
      9 import java.util.List;
     10 import java.util.Set;
     11 
     12 import org.quartz.JobDataMap;
     13 import org.quartz.JobDetail;
     14 import org.quartz.JobKey;
     15 import org.quartz.Scheduler;
     16 import org.quartz.SchedulerException;
     17 import org.quartz.SchedulerFactory;
     18 import org.quartz.Trigger;
     19 import org.quartz.impl.StdSchedulerFactory;
     20 import org.quartz.impl.matchers.GroupMatcher;
     21 
     22 public class QuartzUtil {
     23     public static SchedulerFactory schedulerFactory = new StdSchedulerFactory();
     24 
     25     @SuppressWarnings({ "unchecked", "rawtypes" })
     26     public void startDelayTimeJob(String key, String group, int delayMillisecond, Class clz) {
     27         try {
     28             Scheduler sched = schedulerFactory.getScheduler();
     29             sched.start();
     30             long fTime = System.currentTimeMillis() + delayMillisecond;
     31             JobDetail job = newJob(clz).withIdentity(key, group).build();
     32             Trigger trigger = newTrigger().withIdentity(key, group).startAt(new Date(fTime))
     33                     .withSchedule(simpleSchedule().withRepeatCount(0)).build();
     34             sched.scheduleJob(job, trigger);
     35 
     36         } catch (SchedulerException e) {
     37             e.printStackTrace();
     38         }
     39     }
     40 
     41     @SuppressWarnings({ "unchecked", "rawtypes" })
     42     public void startFixedDateJob(String key, String group, Date triggerStartTime, Class clz) {
     43         try {
     44             Scheduler sched = schedulerFactory.getScheduler();
     45             sched.start();
     46             JobDetail job = newJob(clz).withIdentity(key, group).build();
     47             Trigger trigger = newTrigger().withIdentity(key, group).startAt(triggerStartTime)
     48                     .withSchedule(simpleSchedule().withRepeatCount(0)).build();
     49             sched.scheduleJob(job, trigger);
     50 
     51         } catch (SchedulerException e) {
     52             e.printStackTrace();
     53         }
     54     }
     55 
     56     @SuppressWarnings({ "unchecked", "rawtypes" })
     57     public void startCycleLimitedJob(String key, String group, int interval, int count, Class clz) {
     58         try {
     59             Scheduler sched = schedulerFactory.getScheduler();
     60             sched.start();
     61             JobDetail job = newJob(clz).withIdentity(key, group).build();
     62             Trigger trigger = newTrigger().withIdentity(key, group).startNow()
     63                     .withSchedule(simpleSchedule().withIntervalInSeconds(interval).withRepeatCount(count)).build();
     64             sched.scheduleJob(job, trigger);
     65 
     66         } catch (SchedulerException e) {
     67             e.printStackTrace();
     68         }
     69     }
     70 
     71     @SuppressWarnings({ "unchecked", "rawtypes" })
     72     public void startCronJob(String key, String group, String cron, Class clz) {
     73         try {
     74             Scheduler sched = schedulerFactory.getScheduler();
     75             sched.start();
     76             JobDetail job = newJob(clz).withIdentity(key, group).build();
     77             Trigger trigger = newTrigger().withIdentity(key, group).startNow().withSchedule(cronSchedule(cron)).build();
     78             sched.scheduleJob(job, trigger);
     79 
     80         } catch (SchedulerException e) {
     81             e.printStackTrace();
     82         }
     83     }
     84 
     85     @SuppressWarnings({ "unchecked", "rawtypes" })
     86     public void startCronJobWithData(String key, String group, String cron, Class clz, JobDataMap map) {
     87         try {
     88             Scheduler sched = schedulerFactory.getScheduler();
     89             sched.start();
     90             JobDetail job = newJob(clz).withIdentity(key, group).setJobData(map).build();
     91             Trigger trigger = newTrigger().withIdentity(key, group).startNow().withSchedule(cronSchedule(cron)).build();
     92             sched.scheduleJob(job, trigger);
     93 
     94         } catch (SchedulerException e) {
     95             e.printStackTrace();
     96         }
     97     }
     98 
     99     @SuppressWarnings({ "unchecked", "rawtypes" })
    100     public void startCronJobWithData(String jobName, String jobGroup, String triggerName, String triggerGroup,
    101             String cron, Class clz, JobDataMap map) {
    102         try {
    103             Scheduler sched = schedulerFactory.getScheduler();
    104             sched.start();
    105             JobDetail job = newJob(clz).withIdentity(jobName, jobGroup).setJobData(map).build();
    106             Trigger trigger = newTrigger().withIdentity(triggerName, triggerGroup).startNow()
    107                     .withSchedule(cronSchedule(cron)).build();
    108             sched.scheduleJob(job, trigger);
    109 
    110         } catch (SchedulerException e) {
    111             e.printStackTrace();
    112         }
    113     }
    114 
    115     @SuppressWarnings({ "unchecked", "rawtypes" })
    116     public void startCronJob(String jobName, String jobGroup, String triggerName, String triggerGroup, String cron,
    117             Class clz) {
    118         try {
    119             System.out.println("schedFactoryId : " + schedulerFactory.toString());
    120             Scheduler sched = schedulerFactory.getScheduler();
    121             sched.start();
    122             System.out.println("schedId : " + sched.getSchedulerInstanceId() + ",schedName : "
    123                     + sched.getSchedulerName() + ", " + sched.toString());
    124             JobDetail job = newJob(clz).withIdentity(jobName, jobGroup).build();
    125             Trigger trigger = newTrigger().withIdentity(triggerName, triggerGroup).startNow()
    126                     .withSchedule(cronSchedule(cron)).build();
    127             sched.scheduleJob(job, trigger);
    128 
    129         } catch (SchedulerException e) {
    130             e.printStackTrace();
    131         }
    132     }
    133 
    134     public void stopJob(String jobName, String jobGroup) {
    135         JobKey jk = new JobKey(jobName, jobGroup);
    136         Collection<Scheduler> collection;
    137         try {
    138             collection = schedulerFactory.getAllSchedulers();
    139             Iterator<Scheduler> iter = collection.iterator();
    140             while (iter.hasNext()) {
    141                 Scheduler sched = iter.next();
    142                 for (String groupName : sched.getJobGroupNames()) {
    143                     for (JobKey jobKey : sched.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) {
    144                         if (jobKey.equals(jk)) {
    145                             sched.deleteJob(jk);
    146                             System.out.println("[Stop] job : " + jobKey);
    147                         }
    148                     }
    149                 }
    150             }
    151         } catch (SchedulerException e) {
    152             e.printStackTrace();
    153         }
    154 
    155     }
    156 
    157     public void printJob() {
    158         Collection<Scheduler> collection;
    159         try {
    160             collection = schedulerFactory.getAllSchedulers();
    161             System.out.println("[Print] Current Scheduler Size : " + collection.size());
    162             Iterator<Scheduler> iter = collection.iterator();
    163             while (iter.hasNext()) {
    164                 Scheduler sched = iter.next();
    165                 List<String> groupList = sched.getJobGroupNames();
    166                 System.out.println("[Print] Current Group Size : " + groupList.size());
    167                 for (String groupName : groupList) {
    168                     Set<JobKey> jobKeySet = sched.getJobKeys(GroupMatcher.jobGroupEquals(groupName));
    169                     System.out.println("[Print] Current JOB Size : " + jobKeySet.size());
    170                     for (JobKey jobKey : jobKeySet) {
    171                         System.out.println("[Print] Current JOB : " + jobKey);
    172                         // System.out.println(sched.getTriggersOfJob(jobKey));
    173                     }
    174                 }
    175             }
    176         } catch (SchedulerException e) {
    177             e.printStackTrace();
    178         }
    179     }
    180 
    181 }

    三、希望每个需要的人都能轻松的看懂,尽管我没有注释。

  • 相关阅读:
    Linq查询
    Lambda表达式与标准运算符查询
    第四章 面向对象与IO操作
    第三章 C#循环与方法
    第二章 C#基本数据类型
    FPGA与嵌入式一点见解
    FPGA中RAM使用探索
    可控硅的工作原理和主要作用
    异步电路中时钟同步的方法
    FPGA中计数器设计探索
  • 原文地址:https://www.cnblogs.com/yoyotl/p/6947263.html
Copyright © 2020-2023  润新知