Workshop: Java Concurrency Stress (JCStress). Part 1
summary
JCStress is an OpenJDK harness that empirically probes the Java Memory Model by running millions of tiny configurations; it reproduces an atomicity failure in a simple volatile increment (about 50M occurrences out of ~500M samples, ~10%), exposes non-atomic wide-word writes on 32-bit or future value-type layouts, demonstrates that Dekker’s 0/0 outcome is possible without proper ordering, and shows volatile release-acquire and final-field safe publication fix many surprises; the workspace ships runnable tests to reproduce VM, compiler, and hardware issues with JCStress harness.
AI-written summary · about
chapters (21)
- 0:00Start
- 4:09Why One Should Care about Gc Stress
- 7:23Runnable Jc Stress Samples
- 8:55Basics
- 13:34Concurrency Bugs
- 16:10Volatile Increment Test
- 17:11Collision Case
- 17:51Jc Stress Examples
- 20:48Transmitting Configurations
- 24:29Problem with Gmm
- 29:21Jmm Update
- 31:10Overview
- 33:13Race Condition
- 38:21Access Atomicity Accessibility
- 45:03Atomicity
- 49:06Coherence Example
- 53:24Causality Possibility
- 59:03Safe Publication
- 1:00:10Causality
- 1:01:34Taker Test
- 1:18:32Safe Construction
related talks
30mJCStress: Diving into Concurrency and Distributed Systems in Java
36mConcurrency — Java Memory Model — Not Just for Eagles
40mA practical approach to Java Memory Model
27mThe Mutability Matrix of Pain
48mConcurrency: It’s Harder (and Easier) Than You Think
49mUnconventional memory model extensions in practice
41mEverything You Don’t Want to Know About Concurrency on the JVM
50mThe Hidden Art of Thread-Safe Programming: Exploring java.util.con...
