在原子类中,是允许直接实现数学计算的,例如:在AtomicInteger 类是可以直接进行加法计算处理的,但是如果说此时有一些操作不希望使用原子类,就是一些最原始的操作数字想要安全的实现计算,在JDK1.8 之后提供了新的原子的计算类。
原子计算类分为:累加器(DoubleAccumulator、LongAccumulator)和加法器(DoubleAdder、LongAdder)两种
DoubleAccumulator
范例:累加器的使用
@Test
public void useDoubleAccmulator(){
DoubleAccumulator accumulator = new DoubleAccumulator((x,y)->x+y ,1.1);
System.out.println("【累加器】原始存储内容:"+accumulator.doubleValue());
accumulator.accumulate(20); // 数据累加的计算
System.out.println("【累加器】新的内容存储:"+accumulator.doubleValue());
}
结果:
累加器是在一个数据的基础之上不断的进行累加计算的实现的,除了这种机制之外,也可以进行安全的加法计算
DoubleAdder
@Test
public void useDoubleAdder(){
// 定义加法器
DoubleAdder adder = new DoubleAdder();
adder.add(10);
adder.add(20);
adder.add(30);
System.out.println("【加法器】计算结果:"+adder.doubleValue());
}
// 结果:【加法器】计算结果:60.0
这种计算操作是在没有原子类的时候保证准确计算的一种准则操作类,并且是在JUC之后增加进来的新功能