DoubleAccumulator
:一个或多个变量,它们一起保持运行double使用所提供的功能更新值DoubleAdder
:一个或多个变量一起保持初始为零double总和LongAccumulator
:一个或多个变量,一起保持使用提供的功能更新运行的值long ,提供了自定义的函数操作LongAdder
:一个或多个变量一起维持初始为零long总和(重点),只能用来计算加法,且从0开始计算
原子类之LongAdder和LongAccumulator简介
package com.nanjing.gulimall.zhouyimo.test;
import java.util.concurrent.atomic.LongAccumulator;
import java.util.concurrent.atomic.LongAdder;
import java.util.function.LongBinaryOperator;
/**
* @author zhou
* @version 1.0
* @date 2024/1/21 10:13 下午
*/
public class LongAdderAPIDemo {
public static void main(String[] args) {
LongAdder longAdder = new LongAdder();
longAdder.increment();
longAdder.increment();
longAdder.increment();
System.out.println(longAdder.sum());//3
LongAccumulator longAccumulator = new LongAccumulator((x, y) -> x + y, 100);//初始值100
//和1累加
longAccumulator.accumulate(1);//101
longAccumulator.accumulate(3);//101+3=104
longAccumulator.accumulate(5);//104+5=109
System.out.println(longAccumulator.get());//109
//不用lambda表达式也可以,lambda的前身就是匿名内部类
LongAccumulator longAccumulator2 = new LongAccumulator(new LongBinaryOperator() {
@Override
public long applyAsLong(long left, long right) {
return 0;
}
},100);
}
}