Two threads. Two variables. No synchronization on the shared data. And yet the JVM is allowed to produce a result that looks impossible. After all, both threads perform a write before a read. So at ...