定时任务实现原理梳理

59 阅读1分钟

优先队列:基于小顶锥实现,每次新增任务需要进行堆化,取任务时取堆顶元素、调整堆架构,时间复杂度是O(logN).

时间轮算法:是一个环形队列,按照时间的单位区分,每个时间单位里面是一个链表、用来存储定时任务,像时钟一样轮询环形队列,取出链表中的任务执行,如果超出了环形队列的时间粒度,可以使用多级时间轮,即使用不同维度的时间单位,就跟时钟或者水表一样,这一层走了一圈,下一层的才走了一格,时间复杂度为O(1).