android/guava/src/com/google/common/util/concurrent/AtomicDoubleArray.java
@CanIgnoreReturnValue
  public final double getAndAdd(int i, double delta) {
    while (true) {
      long current = longs.get(i);
      double currentVal = longBitsToDouble(current);
      double nextVal = currentVal + delta;
      long next = doubleToRawLongBits(nextVal);
      if (longs.compareAndSet(i, current, next)) {
        return currentVal;
      }
    }
  }
@CanIgnoreReturnValue
  public final double getAndAdd(int i, double delta) {
    while (true) {
      long current = longs.get(i);
      double currentVal = longBitsToDouble(current);
      double nextVal = currentVal + delta;
      long next = doubleToRawLongBits(nextVal);
      if (longs.compareAndSet(i, current, next)) {
        return currentVal;
      }
    }
  }
@ CanIgnoreReturnValue public final double getAndAdd ( int i , double delta ) { while ( true ) { long current = longs . get ( i ) ; double currentVal = longBitsToDouble ( current ) ; double nextVal = currentVal + delta ; long next = doubleToRawLongBits ( nextVal ) ; if ( longs . compareAndSet ( i , current , next ) ) { return currentVal ; } } }
Atomically adds the given value to the element at index {@code i}.

@param i the index
@param delta the value to add
@return the previous value
Atomically adds the given value to the element at index { @code i } .