1. JMM 1.0(JSR 133)内存模型的影响范围
JMM 1.0(JSR 133)内存模型的影响范围是什么?
- JSR 133 的背景
- final 字段语义
- volatile 语义修正
JSR 133 是 Java 5(JDK 1.5)确立的 Java 内存模型(JMM 1.0),修正了旧模型(JSR 133 之前)的问题。影响范围:1) 重新定义 volatile 语义(更强的可见性与有序性,禁止更多重排);2) 引入 final 字段的安全发布保证(构造器内 final 字段对其他线程可见且不受重排影响);3) 完善 happens-before 规则与同步语义;4) 解决了 double-checked locking 的合法性问题(需 volatile);5) 明确各种同步操作(锁、volatile、final)的可见性推导。它奠定了 Java 并发正确性的理论基础。
JSR 133 是"并发正确性"的宪法,影响所有 Java 并发编程。它让某些以前"碰巧正确"的写法变成"规范保证正确"。