如果从多个线程访问Java中的变量,则必须确保它们被安全地发布.这通常意味着使用synchronized或volatile.
我的印象是,我的一些同事并没有认真对待这个问题,因为他们"以前从未听过,volatile而且他们的计划已经工作了多年".
所以我的问题是:
有人可以提供示例Java程序/片段,可靠地显示数据可见性问题.
我认为运行一个程序并看到意外的NPE或陈旧的变量值将有助于更多,而不仅仅是理论上的解释,这是无法证明的.
非常感谢你的帮助!
更新:再强调一点.我已经阅读了Java Concurreny in Practice,并且知道理论上存在可见性问题的示例.我正在寻找的是一种真正展示它们的方法.我不确定,这实际上是可行的,但也许有一个jvm配置或类似的东西允许它.