LongAdder不精确问题

来源:6-10 总结原子类

CAnthony

2020-09-02

public long sum() {
    Cell[] as = cells; Cell a;
    long sum = base;
    if (as != null) {
        for (int i = 0; i < as.length; ++i) {
            if ((a = as[i]) != null)
                sum += a.value;
        }
    }
    return sum;
}

在调用sum()的时候,如果是还没有遍历到的Cell[]槽被修改了而不是已经遍历的槽被修改,那不会影响最终的结果正确性了吗?

写回答

1回答

悟空

2020-09-02

会影响,这是LongAdder的特性。

1
5
悟空
回复
慕九州8243454
可以用,并发的时候很难定义什么是“精确”,因为计算需要一个过程
2022-01-04
共5条回复

深度解密Java并发工具,精通JUC,成为并发多面手

JUC全方位讲解,构建并发工具类知识体系

1599 学习 · 573 问题

查看课程