ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

quartz2.3.0(三)cron定义调度周期

2019-06-23 22:47:52  阅读:316  来源: 互联网

标签:withIdentity ft 调度 cron quartz2.3 job trigger group1 build


cron详解参见:https://www.cnblogs.com/yaowen/p/3779284.html 

cron总结

 

任务类

 1 /**
 2  * 任务job
 3  */
 4 public class SimpleJob implements Job {
 5 
 6     private static Logger LOG = LoggerFactory.getLogger(SimpleJob.class);
 7 
 8     // 必须要有public修饰的无参构造函数
 9     public SimpleJob() {
10     }
11 
12     // 任务执行方法
13     public void execute(JobExecutionContext context) throws JobExecutionException {
14         JobKey jobKey = context.getJobDetail().getKey();  //jobKey长这样:group1.job6
15         LOG.info("执行任务。SimpleJob says: " + jobKey + " executing at " + new Date());
16     }
17 
18 }

 

调度管理类

  1 package org.quartz.examples.example3;
  2 
  3 import static org.quartz.CronScheduleBuilder.cronSchedule;
  4 import static org.quartz.JobBuilder.newJob;
  5 import static org.quartz.TriggerBuilder.newTrigger;
  6 
  7 import org.quartz.CronTrigger;
  8 import org.quartz.JobDetail;
  9 import org.quartz.Scheduler;
 10 import org.quartz.SchedulerFactory;
 11 import org.quartz.SchedulerMetaData;
 12 import org.quartz.impl.StdSchedulerFactory;
 13 import org.slf4j.Logger;
 14 import org.slf4j.LoggerFactory;
 15 
 16 import java.util.Date;
 17 
 18 /**
 19  * 这个示例将演示使用Cron触发器的Quartz的所有基本调度功能。
 20  * 
 21  */
 22 public class CronTriggerExample {
 23     Logger LOG = LoggerFactory.getLogger(CronTriggerExample.class);
 24 
 25     /*
 26      * 以下用到的cron总结: "0/20 * * * * ?" 每20秒执行一次
 27      */
 28     public void run() throws Exception {
 29         // 初始化一个调度工厂,并实例化一个调度类
 30         SchedulerFactory sf = new StdSchedulerFactory();
 31         Scheduler sched = sf.getScheduler();
 32 
 33         JobDetail job = null;
 34         CronTrigger trigger = null;
 35         Date ft = null;
 36 
 37         // ========================================================
 38         // ============ job1 每20秒执行一次,无限期重复
 39         // ========================================================
 40         job = newJob(SimpleJob.class).withIdentity("job1", "group1").build();
 41         trigger = newTrigger().withIdentity("trigger1", "group1").withSchedule(cronSchedule("0/20 * * * * ?")).build();
 42         ft = sched.scheduleJob(job, trigger);
 43         LOG.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: "
 44                 + trigger.getCronExpression());
 45 
 46         // ========================================================
 47         // ============ job2 将每隔2分钟运行一次(每分钟过后15秒)
 48         // ========================================================
 49         job = newJob(SimpleJob.class).withIdentity("job2", "group1").build();
 50         trigger = newTrigger().withIdentity("trigger2", "group1").withSchedule(cronSchedule("15 0/2 * * * ?")).build();
 51         ft = sched.scheduleJob(job, trigger);
 52         LOG.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: "
 53                 + trigger.getCronExpression());
 54 
 55         // ========================================================
 56         // ============ job3 将每隔一分钟运行一次,但只在上午8点到下午5点之间才运行
 57         // ========================================================
 58         job = newJob(SimpleJob.class).withIdentity("job3", "group1").build();
 59         trigger = newTrigger().withIdentity("trigger3", "group1").withSchedule(cronSchedule("0 0/1 8-17 * * ?"))
 60                 .build();
 61         ft = sched.scheduleJob(job, trigger);
 62         LOG.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: "
 63                 + trigger.getCronExpression());
 64 
 65         // ========================================================
 66         // ============ job4 每三分钟运行一次,但只在下午5点到11点之间运行
 67         // ========================================================
 68         job = newJob(SimpleJob.class).withIdentity("job4", "group1").build();
 69         trigger = newTrigger().withIdentity("trigger4", "group1").withSchedule(cronSchedule("0 0/3 17-23 * * ?"))
 70                 .build();
 71         ft = sched.scheduleJob(job, trigger);
 72         LOG.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: "
 73                 + trigger.getCronExpression());
 74 
 75         // ========================================================
 76         // ============ job5将在每月的第1天和第15天上午10点运行
 77         // ========================================================
 78         job = newJob(SimpleJob.class).withIdentity("job5", "group1").build();
 79         trigger = newTrigger().withIdentity("trigger5", "group1").withSchedule(cronSchedule("0 0 10am 1,15 * ?"))
 80                 .build();
 81         ft = sched.scheduleJob(job, trigger);
 82         LOG.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: "
 83                 + trigger.getCronExpression());
 84 
 85         // ========================================================
 86         // ============ job6 将每30秒运行一次,但仅限于工作日(周一至周五)
 87         // ========================================================
 88         // job 6 will run every 30 seconds but only on Weekdays (Monday through Friday)
 89         job = newJob(SimpleJob.class).withIdentity("job6", "group1").build();
 90         trigger = newTrigger().withIdentity("trigger6", "group1").withSchedule(cronSchedule("0,30 * * ? * MON-FRI"))
 91                 .build();
 92         ft = sched.scheduleJob(job, trigger);
 93         LOG.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: "
 94                 + trigger.getCronExpression());
 95 
 96         // ========================================================
 97         // ============ job7 每30秒运行一次,但只在周末(周六和周日)
 98         // ========================================================
 99         job = newJob(SimpleJob.class).withIdentity("job7", "group1").build();
100         trigger = newTrigger().withIdentity("trigger7", "group1").withSchedule(cronSchedule("0,30 * * ? * SAT,SUN"))
101                 .build();
102         ft = sched.scheduleJob(job, trigger);
103         LOG.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: "
104                 + trigger.getCronExpression());
105 
106         // ====================================================================
107         // ============ 启动调度器
108         // ====================================================================
109         sched.start();
110 
111         try {
112             Thread.sleep(300L * 1000L); // 等待5分钟
113         } catch (Exception e) {
114         }
115         // 停止调度器
116         sched.shutdown(true);
117         // 显示调度器的一些统计信息
118         SchedulerMetaData metaData = sched.getMetaData();
119         LOG.info("Executed " + metaData.getNumberOfJobsExecuted() + " jobs.");
120     }
121 
122     public static void main(String[] args) throws Exception {
123         CronTriggerExample example = new CronTriggerExample();
124         example.run();
125     }
126 
127 }

 

标签:withIdentity,ft,调度,cron,quartz2.3,job,trigger,group1,build
来源: https://www.cnblogs.com/zhuwenjoyce/p/11074747.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有