时间轮算法

时间轮的用法

1
2
3
4
5
6
7
8
9
// 默认间隔时间为 100 毫秒
Timer timer = new HashedWheelTimer();
Timeout timeout = timer.newTimeout(new TimerTask() {
    @Override
    public void run(Timeout timeout) throws Exception {
        System.out.println("run");
    }
}, 10, TimeUnit.SECONDS);
timer.stop();

时间轮的原理

有一个环形数组,每个格子都是一个队列,每隔 interval 时间,指针就会移动到下一格,然后把队列中的任务拿出来判断是否到期并执行。