HashedWheelTimer学习心得

HashedWheelTimer:
引入一个时间轮算法的概念,内部包含几个比较重要的参数:
tickDuration 每移动一格需要间隔时间,可以设置不同的时间单位
ticksPerWheel 时间轮的大小,对应的是控制底层数组的大小,默认数组大小是大于等于ticksPerWheel的最小2的n次方
底层是基于数组+双向链表实现
底层会启动一个线程,间隔tickDuration时间单位,去查看是否有过期的任务,存在过期的任务,则执行其run方法
若remainingRounds>0,remainingRounds--,然后根据重新计算其数组下标

newTimeout() 添加延迟执行的任务

该方案的优缺点:
只启用一个线程去,按照指定周期去扫描过期任务,减少系统资源的占用

缺点:
会有一定的时间误差,依据设置的每一个的时间单元不同,误差不同。

原文地址:https://www.cnblogs.com/tom-plus/p/14047232.html