timer-benchmarks
timer-benchmarks copied to clipboard
find 3 bug
-
时间轮事件删除时立即从哈希中删除,在触发中延期统一删除可能使得hash map一直变大(我的测试10%影响,先大量加入然后大量删除的应用场景)
-
时间轮事件执行中立即把taskl状态设置为false,因为callbak中可能删除当前执行的定时器,使得size计算不对变成负数(测试遇到了,size 变量可以删除用hash map计数)
-
cancel 时间轮的事件可多次执行。需设置task事件状态为fasle或从hash中删除
-
tick中执行了2次execute,可以减少一次调用(简单做在外部循环外调用一次,调用一次就行)。
-
cascade 重新添加事件要过滤已失效的