此篇介绍一下如何简单实现定时任务调度器。

实现定时任务调度器,最关键的如何对任务的时间进行判断和调度。

顺序遍历

对所有任务进行顺序遍历,进行时间判断和调度,虽然简单,但明显不是时间最优的方法。

优先级队列

使用时间作为优先级,只需要查询时间最接近当前时间的队列数据即可。
优先级队列一般使用堆结构进行实现,时间复杂度LogN。

时间轮

时间轮是一个环形队列,按照时间的单位进行区分。比如每个单位是1s,然后一个单位里挂载一个链表,用来存储定时任务。
如果时间超过了一个环形队列的长度,那么可以使用多级时间轮进行优化。比如第一层的走一圈时,第二层的走一格,有点类似于水表的那种表示。
最终时间复杂度为O(1)。