你是否在Java中使用volatile关键字?

问题:

今天在工作中,我遇到了Java中的volatile关键字。不太熟悉,我发现这个解释:

 Java theory and practice: Managing volatility

鉴于该文章解释了该关键字的详细信息,您是否曾经使用过这个信息,或者您是否可以看到可以正确使用该关键字的情况?

回答:

 volatile具有内存可见性的语义。基本上,在写操作完成之后,volatile字段的值在所有读取器(特别是其他线程)中都可见。没有volatile,读者可以看到一些不更新的价值。
回答你的问题:是的,我使用volatile变量来控制一些代码是否继续循环。循环测试volatile值,如果为true则继续。可以通过调用“stop”方法将条件设置为false。循环看到false并在停止方法完成执行后测试值时终止。
我强烈推荐的这本书“Java Concurrency in Practice”给出了volatile的一个很好的解释。这本书是由同一个人撰写的,该人写了问题引用的IBM文章(实际上,他在该文章的底部引用了他的书)。我的使用volatile是他的文章称之为“模式1状态标志”。
如果您想了解有关volatile如何工作的更多信息,请阅读the Java memory model。如果你想超越这个级别,看看一个好的电脑架构书,如Hennessy & Patterson,并阅读关于缓存一致性和缓存的一致性。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Do you ever use the volatile keyword in Java?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 77 = 87