时间轮
目录
时间轮
时间轮用「数组 + 链表」替代了 DelayedWorkQueue 的「堆结构」
优点
- 时间复杂度优化:O(log N) → O(1)
- 批量处理优势:一次 tick 处理一批任务
- 内存局部性:数组连续内存,CPU 缓存友好
- 减少对象创建:无需为每个任务创建 Future
- 并发友好:可以细粒度加锁,降低竞争 6. 性能稳定:不随任务数量增加而下降
缺点
- 精度问题
- 时间轮精度受限于 tickDuration - 不适合纳秒级高精度定时
- 内存占用
- 需要预分配槽数组
- 任务少时会浪费空间
- 延迟跨度大的问题
- 如果有任务 1ms 后执行,有任务 1天后执行
- 单层时间轮需要很多槽,要用多层时间轮
- 取消任务复杂
- 不像 Future 可以直接 cancel()
- 需要额外设计(标记位或持有引用)
浙公网安备 33010602011771号