【发布时间】:2011-02-16 17:49:47
【问题描述】:
如果从多个线程访问 Java 中的变量,则必须确保它们被安全地发布。这通常意味着使用synchronized或volatile。
我的印象是,我的一些同事并不认真对待这个问题,因为他们“以前从未听说过volatile,而且他们的程序已经运行了多年”。
所以我的问题是:
谁能提供一个示例 Java 程序/sn-p,它可靠地显示数据可见性问题。
我认为运行一个程序并看到意外的 NPE 或过时的变量值会比仅仅理论上的解释更有帮助,而这无法证明。
非常感谢您的帮助!
更新:再次强调这一点。我已阅读 Java Concurreny in Practice 并且知道理论上存在可见性问题的示例。我正在寻找的是一种真正展示它们的方法。我不确定这实际上是否可行,但也许有一个 jvm 配置或类似的东西允许它。
【问题讨论】:
标签: java multithreading visibility