请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于Accumulator累加器

这个累加器如果在加法的时候可能和longadder差不多,但是在进行乘法的时候,是如何最后在共享内存中进行叠加的呢,还是说会退化成对象原子类

正在回答 回答被采纳积分+3

1回答

悟空 2020-12-18 15:30:01

乘法和加法是类似的原理,最后在共享内存叠乘

0 回复 有任何疑惑可以回复我~
  • 提问者 技术进步官 #1
    那复杂一点的咧,比如说x+x*y,应该不能最后叠加或者叠乘
    回复 有任何疑惑可以回复我~ 2020-12-18 17:12:37
  • 悟空 回复 提问者 技术进步官 #2
    原理是一样的,不管是加还是乘还是表达式,都是最后累加,源码:    public long getThenReset() {
            Cell[] as = cells; Cell a;
            long result = base;
            base = identity;
            if (as != null) {
                for (int i = 0; i < as.length; ++i) {
                    if ((a = as[i]) != null) {
                        long v = a.value;
                        a.value = identity;
                        result = function.applyAsLong(result, v);
                    }
                }
            }
            return result;
        }
    可以看看源码分析:https://www.cnblogs.com/huangjuncong/p/9152510.html
    https://www.jianshu.com/p/73ec78b4e336
    回复 有任何疑惑可以回复我~ 2020-12-21 10:58:19
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号