Java web

框架篇-定时任务(一) - JDK Timer

2020-04-28  本文已影响0人  秃头猿猿

1.定时任务(Timer)

参考《可伸缩服务架构 框架与中间件 第6章》

1.1 前言

1.2 实现方式

定时任务有很多种实现方式,这里我们介绍三种jdk timer,spring task,Quartz,这三种不同的实现的方式有着各自的有点和缺陷。

1.3 JDK Timer

Timer 是 JDK 提供的一个定时器, 存在于 java.util包底下。能够定时调度所拥有的任务(TimerTask)。TimerTask是一个定时任务类,这个类实现了Runable接口。需要定时执行的任务都需要写在 run 方法里面

Timer类源码:

image-20200428093741196.png
image-20200428093755683.png

所以 java.util.Timer定时器实际上是一个单线程。

1.4 测试

当然还有很多方法可以自己去测试

当我们有两个任务时,由于timer是单线程,总是要等第一个任务执行完成才会去执行下一个任务。也就是说这个任务是串行的。

1.5 缺陷

通过上面简单的例子我们知道,这种定时器存在着一定的优点和缺陷

1.6 ScheduledExecutor

使用Timer存在上述缺点。因此在jdk 5.0推出了基于线程池设计的ScheduledExecutor。其核心思想就是当我们每执行一个定时任务就由线程池里面的一个线程去执行。这样就让任务由串行变成了并行,也不存在着必须等前一个任务执行完成,才能调度后一个任务的尴尬局面。

上一篇 下一篇

猜你喜欢

热点阅读