JUC包中的分而治之策略-为提高性能而生( 六 )

当多个线程在争夺同一个Cell原子变量时候如果失败并不是在当前cell变量上一直自旋CAS重试 , 而是会尝试在其它Cell的变量上进行CAS尝试 , 这个改变增加了当前线程重试时候CAS成功的可能性 。 最后获取LongAdder当前值的时候是把所有Cell变量的value值累加后在加上base返回的 , 如下代码:

如上代码可知首先把base的值赋值给sum变量 , 然后通过循环把每个cell元素的value值累加到sum变量上 , 最后返回sum.

其实这是一种分而治之的策略 , 先把并发量分担到多个原子变量上 , 让多个线程并发的对不同的原子变量进行操作 , 然后获取计数时候在把所有原子变量的计数和累加 。

思考问题: