【发布时间】:2013-11-02 03:24:25
【问题描述】:
当线程读取 volatile 变量时,它不仅会看到 volatile 的最新更改,还会看到导致更改的代码的副作用
http://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html提到了这一点
有人可以提供一个例子吗?
这首先给我的印象是,读取 volatile 变量的线程会与 writer 线程同步,并等待直到写入完成。但显然情况并非如此。
一个例子会很有帮助,非常感谢。
谢谢, 穆斯塔法
【问题讨论】:
-
Volatile fields do 建立synchronization order:“对 volatile 变量 v 的写入(第 8.3.1.4 节)与任何线程对 v 的所有后续读取同步(其中“后续”是根据同步顺序定义的)。但是,这并不意味着任意写入将发生在任意读取之前(顺序被确定为写入的结果)。
标签: java multithreading volatile