0
点赞
收藏
分享

微信扫一扫

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的整合


好了,到这里,定时任务调度就结束了,周末愉快!

2017-09-24 张丰哲

举报

相关推荐

0 条评论