The CAS primitive

compareAndSet(expected, new). Hardware atomic. Either succeeds (value was expected, now new) or fails (value changed).

Advertisement

The CAS primitive

compareAndSet(expected, new). Hardware atomic. Either succeeds (value was expected, now new) or fails (value changed).

Advertisement

The retry pattern

AtomicReference ref;
T current;
T next;
do {
  current = ref.get();
  next = compute(current);
} while (!ref.compareAndSet(current, next));