一、摘要
在很多业务的系统中,我们常常需要定时的执行一些任务,例如定时发短信、定时变更数据、定时发起促销活动等等。
在上篇文章中,我们简单的介绍了定时任务的使用方式,不同的架构对应的解决方案也有所不同,总结起来主要分单机和分布式两大类,本文会重点分析下单机的定时任务实现原理以及优缺点,分布式框架的实现原理会在后续文章中进行分析。
从单机角度,定时任务实现主要有以下 3 种方案:
while + sleep 组合
最小堆实现
时间轮实现
二、while+sleep组合
while+sleep 方案,简单的说,就是定义一个线程,然后 while 循环,通过 sleep 延迟时间来达到周期性调度任务。
三、最小堆实现
所谓最小堆方案,正如我们上面所说的,每当有新任务加入的时候,会把需要即将要执行的任务排到前面,同时会有一个线程不断的轮询判断,如果当前某个任务已经到达执行时间点,就会立即执行,具体实现代表就是 JDK 中的 Timer 定时器!
四 时间轮
源码请查看原文:(java编写)
https://blog.csdn.net/weixin_44593504/article/details/111467618
其他 实现方式: 红黑树 跳表等

3193

被折叠的 条评论
为什么被折叠?



