分享人:唐坤
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
定时任务就是在代码中规定固定的时间,自动的执行某件事情.比如:定时发送邮件,定时还原签到状态
一.核心概念
1.Job 表示一个工作,要执行的具体内容。此接口中只有一个方法 void execute(JobExecutionContext context)
2.JobDetail JobDetail表示一个具体的可执行的调度程序,Job是这个可执行程调度程序所要执行的内容,另外JobDetail还包含了这个任务调度的方案和策略。
3.Trigger 是一个类,描述触发Job执行的时间触发规则。主要有SimpleTrigger和CronTrigger这两个子类。
4.Scheduler Scheduler代表一个调度容器,一个调度容器中可以注册多个JobDetail和Trigger。当Trigger与JobDetail组合,就可以被Scheduler容器调度了。
SimpleTrigger 当仅需触发一次或者以固定时间间隔周期执行
CronTrigger 通过Cron表达式定义出各种复杂时间规则的调度方案:如每早晨9:00执行,周一、周三、周五下午5:00执行等;
cron 规则 格式: [秒] [分] [小时] [日] [月] [周] [年]
星号():可用在所有字段中,表示对应时间域的每一个时刻,例如, 在分钟字段时,表示“每分钟”; 问号(?):该字符只在日期和星期字段中使用,它通常指定为“无意义的值”,相当于点位符; 减号(-):表达一个范围,如在小时字段中使用“10-12”,则表示从10到12点,即10,11,12; 逗号(,):表达一个列表值,如在星期字段中使用“MON,WED,FRI”,则表示星期一,星期三和星期五; 斜杠(/):x/y表达一个等步长序列,x为起始值,y为增量步长值。如在分钟字段中使用0/15,则表示为0,15,30和45秒,而5/15在分钟字段中表示5,20,35,50,你也可以使用*/y,它等同于0/y;cron 示例
0 0 12 * * ? 每天12点触发
0 15 10 ? * * 每天10点15分触发
* 10-15 10 * * * 每小时的10---15 分 每秒都触发
0 0/5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发)
0 10,20,30 * * * * 每个小时的10分,20分,30分 触发
cron 的格式
怎么使用Spring整合
quartZ官网
感谢观看,如有出错,恳请指正