Dubbo学习Netty中的FastThreadLocal

原创
2021/01/18 22:46
阅读数 409

在之前的Netty的FastThreadLocal文章中介绍了FastThreadLocal在Netty中的实现和使用.

在JDK的ThreadLocal的实现上,它生成一个threadLocalHashCode值,根据这个Code值从ThreadLocalMap中存取值,底层使用的是哈希表.

而FastThreadLocal会生成一个索引下标index,通过这个索引下标从InternalThreadLocalMap中存取值, 底层使用数组的方式实现存取.

一个使用哈希表,一个使用数组,性能会有较明显差异.


今天在浏览Dubbo源码的时候,发现了一个com.alibaba.dubbo.common.threadlocal.InternalThreadLocal类,细看下它的实现,代码与io.netty.util.concurrent.FastThreadLocal很相似.


看下Dubbo源码中对它的解释



This design is learning from io.netty.util.concurrent.FastThreadLocal which is in Netty.


原来Dubbo是学习了Netty的设计. Dubbo并没有使用JDK的ThreadLocal, 它也是使用和Netty一样的设计理念, 底层使用数组实现.


个人见解: 有时候学习源码, 比如学习Netty,可能职业生涯中都不会使用Netty实现一个高性能的框架. 学习源码是让我学习里面的一些思想和解决问题的思路,能够运用到日常的开发工作中.



本文分享自微信公众号 - Netty历险记(infuq217)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部