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.