Java中的易变变量
因此,我正在阅读《 实践 中的 Java并发性》 这本书,而我只能停留在这一解释上,没有一个例子,我似乎无法理解。这是报价:
当线程
A
将数据写入易失性变量,然后线程B
读取同一变量时,在A
写入易失性变量之前可见的所有变量的值 将B
在读取易失性变量后变为可见。
有人可以给我一个反例的原因,为什么“在A
写入易失性变量之前可见的所有变量的值在B
读取易失性变量之后就变得可见”?
我很困惑,为什么B
在读取易失性变量之前所有其他非易失性变量都不可见?
回答:
线程B可能具有这些变量的CPU本地缓存。读取volatile变量可确保观察到从先前对volatile的任何中间刷新。
例如,请阅读以下链接,该链接以“使用易失性修复双重检查锁定”结尾:
http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html
以上是 Java中的易变变量 的全部内容, 来源链接: utcz.com/qa/404990.html