JUC包中的分而治之策略-为提高性能而生( 六 )
当多个线程在争夺同一个Cell原子变量时候如果失败并不是在当前cell变量上一直自旋CAS重试 , 而是会尝试在其它Cell的变量上进行CAS尝试 , 这个改变增加了当前线程重试时候CAS成功的可能性 。 最后获取LongAdder当前值的时候是把所有Cell变量的value值累加后在加上base返回的 , 如下代码:
如上代码可知首先把base的值赋值给sum变量 , 然后通过循环把每个cell元素的value值累加到sum变量上 , 最后返回sum.
其实这是一种分而治之的策略 , 先把并发量分担到多个原子变量上 , 让多个线程并发的对不同的原子变量进行操作 , 然后获取计数时候在把所有原子变量的计数和累加 。
思考问题:
-
何时初始化cell数组
-
当前线程如何选择cell中的元素进行访问
-
如果保证cell中元素更新的线程安全
- 热血传奇|热血传奇:当年心中的巅峰,随便一件无比骄傲
- 手办|原神:“肝帝”再现!玩家花30天自制胡桃手办,手中的护摩亮了
- edg战队|EDG夺冠可谓是小说中的梦幻剧情,先破RNG再废GEN.G,豪虐DK夺冠
- 亚运会|LOL入选亚运会正赛,你心中的阵容怎么选?
- 孙权|三国杀:背景帝!武将皮肤中的最强客串王,孙十万果然名不虚传
- 夏侯惇|王者荣耀之中的“最强坦克”, 夏侯惇和程咬金你更喜欢谁?
- 穿越火线|轻松上手,赶超雷神:盘点CF中那些神枪中的天之骄子
- 明日之后|消逝的光芒2设计师:明日之后打造了我心目中的人尸大决战
- 老玩家|天龙网游:天龙游戏中的神奇玩法,没有经历过别说自己是老玩家
- 魔兽世界|魔兽世界玩家未解之谜,王者荣耀中的死亡骑士,得到授权了吗?