Java 8 AtomicLongよりも効率的な原子操作LogAdder LongAccumulator


LongAdder LongAccumulatorの使用例プログラム内で高度な競合がある場合、大量のスレッドが同じ原子値にアクセスするには、Java 8がAtomicLongの代わりに高度な競合環境で提供するLongAdderとLongAccumulatorを使用します.
LongAdder adder = new LongAdder();
adder.add(2);
System.out.println(adder.intValue());   //   2

adder.increment();
System.out.println(adder.sum());  //   3  sum long 

//   accumulateAndGet  ,  
LongAccumulator la = new LongAccumulator((left, right) -> left + right, 10);
System.out.println(la.intValue());  //   10

AtomicInteger更新メソッドJava 8は、古いAPIの代わりに原子クラスの値を更新するための2つの新しいメソッドupdateAndGetとaccumulateAndGetを追加した.
AtomicInteger ai = new AtomicInteger();

//  
Integer i = ai.updateAndGet(x -> 5);
System.out.println(i);   //   5

//     
ai.accumulateAndGet(1, (oldValue, paramValue) -> oldValue + paramValue);
System.out.println(ai.get());   //   6