4a74153d87f31256e72336148c2bde8e5d889df1
Adds JMH put/get throughput benchmarks (synchronizedMap vs ConcurrentHashMap, swept at 1/2/4/8 threads), a computeIfAbsent recursion trap demo (CHM tolerates recursion into a different key but throws IllegalStateException on the same key; plain HashMap throws ConcurrentModificationException even single-threaded), and a null-handling demo (CHM rejects null keys/values on put() and null keys on get() too). 7/7 JUnit tests pass; all output/ transcripts captured from real runs. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01FhzLY5p6okFva3qsnsRyvM
java-core-examples
Runnable companion code for ankurm.com's Java-core / concurrency series. One Maven module per article; each module's own README has that article's version table, quickstart, and traps.
| Module | Post |
|---|---|
jmm |
The Java Memory Model Explained: volatile, happens-before, and Why Your Double-Checked Lock Failed |
locks |
synchronized vs ReentrantLock vs StampedLock: Benchmarks and a Decision Table |
atomics |
Java Atomics and VarHandle: CAS, LongAdder, and When Atomics Beat Locks |
vt-pinning |
Diagnosing Virtual Thread Pinning in Production: JFR Events, jcmd, and Real Fixes |
synchronizers |
CountDownLatch vs CyclicBarrier vs Phaser vs Semaphore in Java |
executors |
ExecutorService Done Right: Shutdown, try-with-resources and Virtual Thread Executors |
concurrency-interview |
Top 40 Java Concurrency Interview Questions and Answers (2026) |
arithmetic |
Add Two Numbers in Java Without Overflow: addExact, Widening, and BigInteger |
hashmap-concurrenthashmap |
Java HashMap vs ConcurrentHashMap: Complete Interview Guide |
License
MIT - see LICENSE.
Languages
Java
87.3%
Shell
12%
C
0.7%