从LongAdder看更高效的无锁实现
(感谢 @jd刘锟洋 投稿,更多文章参看他的博客:码梦为生)
原文链接:《比AtomicLong还高效的LongAdder 源码解析》
接触到AtomicLong的原因是在看guava的LoadingCache相关代码时,关于LoadingCache,其实思路也非常简单清晰:用模板模式解决了缓存不命中时获取数据的逻辑,这个思路我早前也正好在项目中使用到。
言归正传,为什么说LongAdder引起了我的注意,原因有二:
作者是Doug lea ,地位实在举足轻重。
他说这个比AtomicLong高效。
我们知道,AtomicLong已经是非常好的解决方案了,涉及并发的地方都是使用CAS操作,在硬件层次上去做 compare and set操作。效率非常高。
因此,我决定研究下,为什么LongAdder比AtomicLong高效。
首先,看LongAdder的继承树:
继承自Striped64,这个类包装了一些很重要的内部类和操作。稍候会看到。
正式开始前,强调下,我们知道,AtomicLong的实现方式是内部有个value 变量,当多线程并发自增,自减时,均通过C ...
陈皓(左耳朵耗子)
陈皓(1976年-2023年5月13日),男,MegaEase创始人、资深技术专家、程序员。2023年5月13日,陈皓心梗逝世,享年47岁。(来源:百度百科)
公告
由于酷壳(coolshell.cn)是托管在外网,在国内访问较慢,浏览体验不是很好,且怕后续域名或主机未续费的话,整个博客站点的资源就无法访问了,故爬取了酷壳网的整站的内容,使用 Hexo 重新生成了一个镜像站。
本站所有内容均为酷壳网内容镜像,未对正文内容调整,仅对部分内容正文排版及内容资源文件的URL引用做了调整,所有内容版权归原作者所有。
分类
标签
HTTPS cache J++ CSS3 BT 系统管理 Sort Glassfish bug IDE IE ASP W3C 伪装 STL DIP MapReduce Pylot Thin Provisioning WCat 评论 Bjarne Stroustrup Ruby XML mvcc Issue 9 dygraphs JWT QUIC API设计 vi MongoDB Coding timestamp Eclipse GC Gist Apache 代理 实习生 InI FAQ Kinect Sixth Sense Grinder email brainfuck 验证码 Sun thread Java Fast Recovery Redirections Jon Lech Johansen Bret Victor VB.NET etcd debugfs Hash Subversion Open Source Bitcoin ReCAPTCHA Microsoft Hibernate cas Unicode Oracle C++ Apache JMeter Unicode High Availability wtfjs.com Quora VideoCapture Bash Android CVS Polyglot Division of Labour Demo Spring Justin Frankel Linux Fantom 安全 AES 桌面应用 WinAmp
网站资讯
文章数目 :
740
本站总字数 :
1304.8k
本站访客数 :
本站总访问量 :
最后更新时间 :