LongAccumulator 介绍

发布于 2024-06-16 10:33:56 字数 1485 浏览 11 评论 0

public class LongAccumulator extends Striped64 implements Serializable 
   private final LongBinaryOperator function;
    private final long identity;

    /**
     * Creates a new instance using the given accumulator function
     * and identity element.
     * @param accumulatorFunction a side-effect-free function of two arguments
     * @param identity identity (initial value) for the accumulator function
     */
    public LongAccumulator(LongBinaryOperator accumulatorFunction,
                           long identity) {
        this.function = accumulatorFunction;
        base = this.identity = identity;
    }

LongAccumulator 是 LongAdder 的泛化版。因为它可以支持自定义:

  • accumulatorFunction:累加规则,不一定是相加,可以是其他运算。
  • base:初始值,不一定为 0,可以是其他。

使用例子

public static void main(String[] args) {
    LongAccumulator longAccumulator = new LongAccumulator(new LongBinaryOperator() {
        @Override
        public long applyAsLong(long left, long right) {
            return left * right;
        }
    },2);

    long initVal = longAccumulator.get();
    System.out.println(initVal);

    longAccumulator.accumulate(3);
    long res1 = longAccumulator.get();
    System.out.println(res1);
}
2
6

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

少女情怀诗

暂无简介

0 文章
0 评论
483 人气
更多

推荐作者

内心激荡

文章 0 评论 0

JSmiles

文章 0 评论 0

左秋

文章 0 评论 0

迪街小绵羊

文章 0 评论 0

瞳孔里扚悲伤

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文