20181111 Quartz(慕课网)
Quartz体系结构
三个核心概念
- 调度器
- 任务
- 触发器
重要组成
- Job
- JobBuilder
- JobDetail
- JobStore
- Trigger
- TriggerBuilder
- ThreadPool
- Scheduler
监听器
- JobListener
- TriggerListener
- SchedulerListener
Quartz简单使用
HelloJob的定义
public class HelloJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("Hello Quartz: " + DateFormatUtils.format(Calendar.getInstance(), "yyyy-MM-dd HH:mm:ss"));
}
}
定时调用HelloJob
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("name1", "group1").build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("name1", "group1").startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
System.out.println("任务开始: " + DateFormatUtils.format(Calendar.getInstance(), "yyyy-MM-dd HH:mm:ss"));
scheduler.scheduleJob(jobDetail, trigger);
Job
& JobDetail
- Job实例在Quartz中的生命周期
每次调度器执行Job时,它在调用execute方法前会创建一个新的Job实例。
当调用完成后,关联的Job对象实例会被释放,释放的实例会被垃圾回收机制回收。
JobDetail
JobDetail为Job实例提供了许多设置属性,以及JobDataMap成员变量属性,它用来存储特定Job实例的状态信息,调度器需要借助JobDetail对象来添加Job实例
重要属性
- name
- group
- jobClass
- jobDataMap
JobDataMap
获取JobDataMap中内容的两种方式
- 从Map中直接获取
- 添加setter方法对应键值
触发器Trigger
通用属性
- JobKey
- StartTime
- EndTime
SimpleTrigger
- 重复次数可以为0,正整数或是SimpleTrigger.REPEAT_INDEFINITELY常量值
- 重复执行间隔必须是0或长整数
- 一旦被指定了endTime参数,那么会覆盖重复次数参数的效果
CronTrigger
Cron表达式
用于配置CronTrigger实例。
是由7个子表达式组成的字符串,描述了时间表的详细信息。
格式:秒 分 时 日 月 周 年(可省略)
特殊字符意义
字段 | 是否必填 | 允许值 | 允许的特殊字符 |
---|---|---|---|
秒 | 是 | 0-59 | , - * / |
分 | 是 | 0-59 | , - * / |
时 | 是 | 0-23 | , - * / |
日 | 是 | 1-31 | , - * / ? L W C |
月 | 是 | 1-12或JAN-DEC | , - * / |
周 | 是 | 1-7或SUN-SAT | , - * / ? L C # |
年 | 否 | 空,1970-2099 | , - * / |
符号说明
字符 | 含义 |
---|---|
* | 所有 |
? | 不确定值 |
- | 区间 |
, | 多个值,或的意思 |
/ | 递增 |
L | 最后 |
W | 指定日期的最近那个工作日 |
# | 序号,第几 |
L
和W
可以一起使用- 周字段不区分大小写,
MON
和mon
相同 - 利用工具生成表达式
Scheduler
- 主要类:
StdScheduler
- 配置参数默认存储在
quartz.properties
中,在quartz的jar包下,org/quartz/quartz.properties
- 主要函数
- scheduleJob
- start
- standby(挂起)
- shutdown(boolean参数,如果传入true,等待所有job完成后关闭,false或者无参数,立即关闭)
quartz.properties
- 调度器属性
- 线程池属性
- 作业存储设置
- 插件配置
Spring集成
两种方式
- MethodInvokingJobDetailFactoryBean
- JobDetailFactoryBean(更灵活)
参考
20181111 Quartz(慕课网)的更多相关文章
- 慕课网-Java入门第一季-7-2 Java 中无参无返回值方法的使用
来源:http://www.imooc.com/code/1578 如果方法不包含参数,且没有返回值,我们称为无参无返回值的方法. 方法的使用分两步: 第一步,定义方法 例如:下面代码定义了一个方法名 ...
- 使用js脚本批量下载慕课网视频
慕课网(http://www.imooc.com/)上有很多不错的视频,当然我不是来给慕课网打广告的,我本人学习过很多慕课网上的免费的视频. 在线看如果网速慢时,可能会有卡顿,没网时无法观看.所有说下 ...
- 手机端web学习基础--from慕课网
web知识零零散散的知道一些,但总感觉不够系统,遇到问题不知道如何解决,因此特此来系统的学习一下web前端的知识.从慕课网的web基础看起.下面学习http://www.imooc.com/learn ...
- 安卓开发_慕课网_Fragment实现Tab(App主界面)
学习内容来自“慕课网” 这里用Fragment来实现APP主界面 思路: 底部横向排列4个LinearLayout,每个LinearLayout包含一个图片按钮和一个文字 1.默认显示第一个功能(微信 ...
- 安卓开发_慕课网_ViewPager与FragmentPagerAdapter实现Tab实现Tab(App主界面)
学习内容来自“慕课网” ViewPager与FragmentPagerAdapter实现Tab 将这两种实现Tab的方法结合起来.效果就是可以拖动内容区域来改变相应的功能图标亮暗 思路: Fragme ...
- 安卓开发_慕课网_ViewPager实现Tab(App主界面)
学习内容来自“慕课网” 网站上一共有4种方法来实现APP主界面的TAB方法 这里学习第一种 ViewPager实现Tab 布局文件有7个, 主界面acitivity.layout <Linear ...
- 慕课网-安卓工程师初养成-4-9 Java循环语句之 for
来源:http://www.imooc.com/code/1425 Java 的循环结构中除了 while 和 do...while 外,还有 for 循环,三种循环可以相互替换. 语法: 执行过程: ...
- 慕课网-安卓工程师初养成-4-8 Java循环语句之 do...while
do...while 循环与 while 循环语法有些类似,但执行过程差别比较大. 语法: 执行过程: <1>. 先执行一遍循环操作,然后判断循环条件是否成立 <2>. 如果 ...
- 慕课网-安卓工程师初养成-4-7 Java循环语句之 while
来源: http://www.imooc.com/code/1420 生活中,有些时候为了完成任务,需要重复的进行某些动作.如参加 10000 米长跑,需要绕 400 米的赛道反复的跑 25 圈.在 ...
随机推荐
- spfa 单源最短路究极算法
学习博客链接:SPFA 求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm. SPFA算法是西南交通大学段凡丁于1994年发表的. 从名字我 ...
- OLEDB数据源和目标组件
在SSIS工程的开发过程中,OLEDB 数据源和目标组件是最常用的数据流组件.从功能上讲,OLEDB 数据源组件用于从OLEDB 提供者(Provider)中获取数据,传递给下游组件,OLEDB提供者 ...
- 移动端效果之ScrollList
写在前面 列表一直是展示数据的一个重要方式,在手机端的列表展示又和PC端展示不同,毕竟手机端主要靠滑.之前手机端之前一直使用的IScroll,但是IScroll本身其实有很多兼容性BUG,想改动一下需 ...
- centos crontab 计划任务 设置与查看
centos 上 crontab 计划任务 ,这个版本解释的比较清晰 林涛 发表于:2017-4-27 11:11 分类:26点 标签:crontab,Linux,计划任务 36次 这个版本的cron ...
- Final发布 文案+美工展示
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2476项目地址:https://coding.net/u/wuyy694/ ...
- 20135119_涂文斌 实验二 Java面向对象程序设计
北京电子科技学院(BESTI) 实 验 报 告 课程: Java 班级:1351 姓名:涂文斌 学号:20135119 成绩: ...
- 20135234mqy-——信息安全系统设计基础第十四周学习总结
第九章 虚拟存储器 主要作用: 将主存看作是一个存储在磁盘上的地址空间的高速缓存,在主存中只保护活动的区域,并根据需要在磁盘和主存之间来回传送数据: 为每个进程提供了一致的地址空间,从而简化了存储器管 ...
- git学习心得(1)
这次是第一次用git这个平台,还非常不熟练,尤其是在上传代码的步骤上,有好几次都出了问题,多次询问了同学才将代码上传到平台上,git是一个分布式版本控制系统,相对于集中式的来说具有很多优点,但是中文资 ...
- 第三次作业--导入excel表格(完整版)
031302322 031302316 将教师排课表导入系统 使用powerdesigner设计数据库表格 设计概念模型 打开new -> Conceptual Data Model创建概念模型 ...
- 11th 5个新的问题——关于软件工程
5个新的问题: 1.现在课上,我们每一个团队开发一个软件,遵循的是敏捷流程,近乎每天都召开Scrum会议,但这一切都基于团队人数很少,这样我们可以畅所欲言,而且不会花费过长时间,但是,如果是大团队呢? ...