java.version=17.0.12 vm=Java HotSpot(TM) 64-Bit Server VM == 1. volatile is visibility, not atomicity == plain int, two threads final=1 volatile int, two threads final=1 AtomicInteger CAS loop final=2 == 2. volatile safe publication == reader sees value=42 == 3. ABA == AtomicInteger: expected=0 cas=true final=2 AtomicStampedReference: expected=0/0 cas=false final=0/2 == 4. ConcurrentHashMap lazy init and resize == new CHM<>() table=0 sizeCtl=0 size=0 after put 1 table=16 sizeCtl=12 size=1 after put 13 table=32 sizeCtl=24 size=13 size=13 mappingCount=13 new CHM<>(1000) table=0 sizeCtl=2048 size=0 after first put table=2048 sizeCtl=1536 size=1 == 5. ConcurrentHashMap atomic merge == merge total=80000 expected=80000 0=20000 1=20000 2=20000 3=20000 == 6. ConcurrentHashMap rejects null == null key -> NullPointerException null value -> NullPointerException size=0