數據競爭三要素:
JMM 核心承諾:正確同步的程序執行具備順序一致性——結果與順序一致性模型中執行結果相同。同步含廣義同步原語(lock、volatile、final)。

概念模型:單一全局內存 + 擺動開關串行化所有線程內存訪問。
class SynchronizedExample {
int a = 0; boolean flag = false;
synchronized void writer() { a = 1; flag = true; }
synchronized void reader() { if (flag) { int i = a; } }
}

JMM 實現方針:不改變正確同步程序結果前提下,最大化編譯器/處理器優化自由度。
| 特性 | 順序一致性模型 | JMM |
|---|---|---|
| 整體執行順序 | 無序(不可預知) | 無序(不可預知) |
| 線程間見到的操作順序 | 一致 | 可能不一致(本地內存緩存導致) |
| 單線程內操作順序 | 保證程序順序 | 不保證(臨界區內可重排) |
| 64位讀寫原子性 | 保證 | 不保證(視JVM實現) |