Core concept

AtomicInteger counter = new AtomicInteger();
counter.incrementAndGet();
counter.compareAndSet(0, 1);
Advertisement

How it works

ABA problem in CAS-heavy code. LongAdder better for high-contention counters.

Advertisement

Trade-offs + gotchas

Lock-free counters + flags.