private static LongAdder longAdder1 = new LongAdder();
private static LongAdder longAdder2 = new LongAdder();
private static LongAdder data = longAdder1;//默认longAdder1
private 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