Java Memory Model

JSR-133

happens-before

volatile

  • when volatile is insufficient

synchronized

Comparison: Java volatile vs Go atomic vs C++ acquire/release