产品中心
详细信息
AINT-02C
AINT-02C数据结构
下面我们谈谈定时器的数据结构。定时器通常与延迟队列密不可分,延时队列是什么?顾名思义它是一种带有延迟功能的消息队列。而延迟队列底层通常可以采用以下几种数据结构之一来实现:
有序链表,这个直观,好理解。
堆,应用实例如Java JDK中的DelayQueue、Go内置的定时器等。
时间轮/多级时间轮,应用实例如Linux内核定时器、Netty工具类HashedWheelTimer、Kafka内部定时器等。
这里重点介绍一下时间轮(TimeWheel)。一个时间轮是一个环形结构,可以想象成时钟,分为很多格子,一个格子代表一段时间(越短Timer精度越高),并用一个List保存在该格子上到期的所有任务,同时一个指针随着时间流逝一格一格转动,并执行对应List中所有到期的任务。
AINT-02C