private static LongAdder longAdder1 = new LongAdder();private static LongAdder longAdder2 = new LongAdder();private static LongAdder data = longAdder1;//默认longAdder1private static boolean flag = true;//开关public void add() {data.increment();}public long getSum() {long sum = 0;if (flag) {data = longAdder2;sum = longAdder1.sum();flag = false;} else {data = longAdder1;sum = longAdder2.sum();flag = true;}return sum;}
流程图:
这个方法其实就是类似于一个开关按钮,一开始默认在longAdder1进行添加,当我要获取值的时候,就按下开关让它在另外一边longAdder2进行添加,所以就能保证在longAdd1上获取的是正确值也不会影响添加,代码逻辑也比较简单,缺点是空间开销更大。暂时只能想到这个办法解决问题,有时间再想想还能不能优化吧。
原文链接:https://blog.csdn.net/weixin_45909775/article/details/121729242
