Java定时任务调度详解
前言在实际项目开发中,除了Web应用、SOA服务外,还有一类不可缺少的,那就是定时任务调度。定时任务的场景可以说非常广泛,比如某些视频网站,购买会员后,每天会给会员送成长值,每月会给会员送一些电影券;比如在保证最终一致性的场景中,往往利用定时任务调度进行一些比对工作;比如一些定时需要生成的报表、邮件;比如一些需要定时清理数据的任务等。本篇博客将系统的介绍定时任务调度,会涵盖Timer、ScheduledExecutorService、开源工具包Quartz,以及Spring和Quartz的结合等内容。 JDK原生定时工具:Timer
schedule的四种用法和scheduleAtFixedRate的两种用法
思考1:如果time/firstTime指定的时间,在当前时间之前,会发生什么呢?
思考2:schedule和scheduleAtFixedRate有什么区别?
思考3:如果执行task发生异常,是否会影响其他task的定时调度?
思考4:Timer的一些缺陷?
一个简单的Demo实例 ? Timer其他需要关注的方法
? JDK对定时任务调度的线程池支持:ScheduledExecutorService
我们直接看例子: 运行结果: ? 定时任务大哥:Quartz
Quartz的体系结构 先来看一个Demo: ?
CronTrigger示例 Cron表达式的写法
? Spring和Quartz的整合
|