We use volatile
在我们的一个项目中,维护由不同线程访问的变量的相同副本。我的问题是是否可以使用volatile
with static
。编译器没有给出任何错误,但我不明白使用两者的原因。
如果没有阅读内存模型规范,我建议您阅读http://jeremymanson.blogspot.com/2008/11/what-volatile-means-in-java.html http://jeremymanson.blogspot.com/2008/11/what-volatile-means-in-java.html。它是由其中一位写的Java内存模型 https://en.wikipedia.org/wiki/Java_memory_model作者,应该回答你的问题。从以下角度思考内存读取和写入发生在之前 https://secure.wikimedia.org/wikipedia/en/wiki/Java_Memory_Model#The_memory_model条款也很有帮助; Java 5 开始的 JMM 添加了happens-before语义volatile
.
具体来说,当您从一个线程读取 易失性变量时,该线程现在可以看到所有其他线程对该易失性变量的写入(包括对该易失性变量的写入)。
是的,你可以使用static https://stackoverflow.com/questions/413898/what-does-the-static-keyword-do-in-java with volatile
。他们做不同的事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)