如果从多个线程访问Java中的变量,则必须确保它们被安全地发布.这通常意味着使用synchronized或volatile.
我的印象是,我的一些同事并没有认真对待这个问题,因为他们"以前从未听过,volatile而且他们的计划已经工作了多年".
所以我的问题是:
有人可以提供示例Java程序/片段,可靠地显示数据可见性问题.
我认为运行一个程序并看到意外的NPE或陈旧的变量值将有助于更多,而不仅仅是理论上的解释,这是无法证明的.
非常感谢你的帮助!
更新:再强调一点.我已经阅读了Java Concurreny in Practice,并且知道理论上存在可见性问题的示例.我正在寻找的是一种真正展示它们的方法.我不确定,这实际上是可行的,但也许有一个jvm配置或类似的东西允许它.
我真的很好奇JVM如何与线程一起工作!在我的互联网搜索中,我找到了一些关于RTSJ的资料,但我不知道这是否是我答案的正确方向.我还在sun的论坛http://forums.sun.com/thread.jspa?forumID=513&threadID=472453中找到了这个主题 ,但这并不令人满意.
有人可以给我一些关于JVM调度算法的指示,材料,文章或建议吗?
我也在寻找有关调度程序中Java线程的默认配置的信息,例如"时间切片时每个线程需要多长时间".而这个东西.
我将不胜感激任何帮助 !
谢谢 !