However, there are actions you can specify that are atomic:
Reads and writes are atomic for reference variables and for most primitive variables (all types except long and double).
没讲清楚还是偶的理解能力太差? ------其他解决方案--------------------
如果你把它拆开:
线程一从 b 读取值
线程一向 c 写入值
然后下面这两种有没有区别:
第一种:
线程一从 b 读取值
线程二向 b 写入新的值
线程一向 c 写入值
第二种:
线程一从 b 读取值
线程一向 c 写入值
线程二向 b 写入新的值
有没有区别?
“线程二向 b 写入新的值”,到底有没有破坏 c = b; 的原子性?
取决于你对这里的原子性如何定义
在我看来 “线程二向 b 写入新的值” 更像是 b 的 “可见性” 没有保证,因为 —— c 没有得到 b 的最新值。
对变量 b 加 volatile 修饰来保障其可见性,就解决了这个问题。