java 调度框架quartz
2024-10-08 07:17:13
核心代码如下:
public class SchedulerTest {
public static void main(String[] args) {
//创建schedulerFactory类
SchedulerFactory schedulerfactory=new StdSchedulerFactory();
Scheduler scheduler=null;
try{
//第一步:通过schedulerFactory获取一个调度器
scheduler=schedulerfactory.getScheduler();
//第二步:创建jobDetail实例,绑定Job实现类
//指明job的名称,所在组的名称,以及绑定job类--这里是要定时执行的那个类,需要实现org.quartz.Job接口
JobDetail job=JobBuilder.newJob(MyJob.class)
.withIdentity("job1", "jgroup1").build();
//第三步:定义调度触发规则:
//规则一:使用simpleTrigger规则--一般用于循环执行
/* Trigger trigger=TriggerBuilder.newTrigger()
.withIdentity("simpleTrigger", "triggerGroup")
//间隔时间
.withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(1)
.withRepeatCount(8)) //运行次数
.startNow().build(); */
//规则二:使用cornTrigger规则 每天10点42分 --一般由用于定时执行
Trigger trigger=TriggerBuilder.newTrigger()
.withIdentity("simpleTrigger", "triggerGroup")
//这个规则下面解释
.withSchedule(CronScheduleBuilder.cronSchedule("0 42 10 * * ? *"))
.startNow().build();
//第四步:把作业和触发器注册到任务调度中
scheduler.scheduleJob(job, trigger);
//最后第五步:启动调度
scheduler.start();
}catch(Exception e){
e.printStackTrace();
}
}
}
规则一:使用simpleTrigger的详解
规则一用的是SimpleScheduleBuilder去设置,主要设置2个参数间隔时间和运行次数
1.间隔时间的设置方法如下:
可以按照毫秒,秒 ,分钟,小时去配置;
2.运行次数的设置方法如下:
withRepeatCount()设置任务需要执行的总次数。
下边那个repeatForever()这个方法单独说一下,这个方法会把repeatCount设置为-1,意思是一致循环下去。
3.间隔时间和运行次数一起设置:
这些方法看方法名字差不多就知道什么意思了,比如repeatMinutelyForever(10) 每隔10分钟,一致循环执行下去。
这些方法内部基本调用的是前面2个方法,具体解释点进去看注释吧。
规则二:使用cornTrigger的详解
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /
特殊字符解释:
* 表示所有值;
? 表示未说明的值,即不关心它为何值;
- 表示一个指定的范围;
, 表示附加一个可能值;
/ 符号前表示开始时间,符号后表示每次递增的值;
表达式 意义
"0 0 12 * * ?" 每天12点触发
--------这三个设置一样的---------------
"0 15 10 ? * *" 每天10:15触发
"0 15 10 * * ?" 每天10:15触发
"0 15 10 * * ? *" 每天10:15触发
0 08 * * * ? 每个小时08分钟的时候触发一次
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
maven 配置
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
参考文章:http://blog.csdn.net/yuebinghaoyuan/article/details/9045471
最新文章
- 如何开启MySQL 5.7.12 的二进制日志
- 修改shell提示符的显示格式
- JAVA学习心得
- 新浪微博授权失败:applications over the unaudited use restrictions
- CodeForces - 420A (字符对称问题)
- Android视录视频示例
- Ajax实现步骤和原理
- ArcEngine 通过IRelationalOperator.Relation判断几何体相交
- 传输中文乱码js解决方法
- php Base64编码文件二进制流主要使用
- Mysql-表的完整性约束
- weblogic安装部署ODM下jrules-res-xu-WL10.rar出现Can&#39;t find com.ibm.rules.res.xu.messages bundle异常
- 简易祖玛--canvas
- POJ2411 铺地砖 Mondriaan&#39;s Dream
- [P3625][APIO2009]采油区域 (前缀和)
- Java语言的主要特点
- Linux C语言连接 sqlserver数据库
- python3 80行代码实现贪吃蛇
- BUILDING ANGULAR APPS USING FLUX ARCHITECTURE
- 一道js试题