netty时间轮HashedWheelTimer文档翻译及简单说明

Netty版本4.1.6。

 

Netty的时间轮HashedWheelTimer给出了一个粗略的定时器实现,之所以称之为粗略的实现是因为该时间轮并没有严格的准时执行定时任务,而是在每隔一个时间间隔之后的时间节点执行,并执行当前时间节点之前到期的定时任务。

当然具体的定时任务的时间执行精度可以通过调节HashedWheelTimer构造方法的时间间隔的大小来进行调节,在大多数网络应用的情况下,由于IO延迟的存在,并不会严格要求具体的时间执行精度,所以默认的100ms时间间隔可以满足大多数的情况,不需要再花精力去调节该时间精度。

HashedWheelTimer(hash时间轮)的主要数据结构被称作轮,简单来说,一个轮就是一张hash表,而对应的hash函数则代表得到在当前时间节点下已经到达触发时间的定时任务。默认情况下该hash表的大小是512,为了得到更大的时间跨度,可以通过调节该参数的大小实现。

只要一个HashedWheelTimer被初始化,都会有一个新的worker线程被创建,因此,一个时间轮实例在一个应用中被共享即可。如果在每一个连接中创建一个时间轮实例,将会导致影响到具体的应用性能。

 

以上是HashedWheelTimer中,作者给出的文档的翻译。

 

在HashedWheelTimer中,都只会有一个worker线程,该线程会不断sleep相应的的时间间隔来触发下一个hash表中槽位的任务执行,在HashedWheelTimer中的hash表中,每一个槽位都是一个双向链表,每个节点都是一个等待执行的任务,但是并不是每一个双向链表中的任务都会执行,当其中一个任务下次执行时间间隔超过时间轮一个轮次的时候,将会将剩下的轮次字段减一,只有当剩下的轮次为1的时候才会执行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值