时间轮

目录

时间轮

时间轮用「数组 + 链表」替代了 DelayedWorkQueue 的「堆结构」

优点

  1. 时间复杂度优化:O(log N) → O(1)
  2. 批量处理优势:一次 tick 处理一批任务
  3. 内存局部性:数组连续内存,CPU 缓存友好
  4. 减少对象创建:无需为每个任务创建 Future
  5. 并发友好:可以细粒度加锁,降低竞争 6. 性能稳定:不随任务数量增加而下降

缺点

  1. 精度问题
    • 时间轮精度受限于 tickDuration - 不适合纳秒级高精度定时
  2. 内存占用
    • 需要预分配槽数组
    • 任务少时会浪费空间
  3. 延迟跨度大的问题
    • 如果有任务 1ms 后执行,有任务 1天后执行
    • 单层时间轮需要很多槽,要用多层时间轮
  4. 取消任务复杂
    • 不像 Future 可以直接 cancel()
    • 需要额外设计(标记位或持有引用)
posted @ 2026-05-12 20:08  deyang  阅读(9)  评论(0)    收藏  举报