LongAdder
来源:3-2 线程安全性-原子性-atomic-2
qq_李永强_03881041
2018-05-04
老师关于我上个问题我看了您的回复,我感觉我想问的并不是伪共享相关的问题。而是一个LongAdder类型是将Long型变量分段进行计算最后把每段的计算结果累加得到最终结果。不知道我说的对吗?我想问的是如何保证这些个分好的段可以进行原子性操作,也就是每一小段都不被其他线程影响,保证最后累加计算出来的结果是正确的。我看了源码里面好像有涉及到localthread不知道跟这个有没有关,源码有点没看懂。老师不知道这次我问明白了吗
写回答
1回答
-
Jimin
2018-05-04
你好,我猜想你也是没细看我之前给你的链接,为了保证其他人看着方便,我再贴一下链接:https://github.com/aCoder2013/blog/issues/22
这里有这样一段(就在我提到伪共享下面,他会将每个【线程】的操作hash到【不同的 cells数组】中,通过不一样的cas去做更新的,这也是性能比AtomicLong好的根本所在,只要不发生伪共享,就不会有问题):
这里的源码注释很好,我感觉可以细细研究一下~
10
相似问题