public static long addAndGet(AtomicLong current,long toAdd){
  long u, r;
  do {
    r=current.get();
    if (r == Long.MAX_VALUE) {
      return Long.MAX_VALUE;
    }
    u=addCap(r,toAdd);
  }
 while (!current.compareAndSet(r,u));
  return u;
}

public static long addAndGet ( AtomicLong current , long toAdd ) { long u , r ; do { r = current . get ( ) ; if ( r == Long . MAX_VALUE ) { return Long . MAX_VALUE ; } u = addCap ( r , toAdd ) ; } while ( ! current . compareAndSet ( r , u ) ) ; return u ; }
concurrent addition bound to long . max_value . any concurrent write will " happen " before this operation .
