今天在工作中,我遇到了 Java 中的 volatile
关键字。由于不太熟悉,我发现了this explanation .
鉴于该文章详细解释了相关关键字,您是否曾经使用过它,或者您是否见过可以正确使用该关键字的情况?
最佳答案
volatile
具有内存可见性的语义。基本上,在写操作完成后, volatile 字段的值对所有读取器(特别是其他线程)都可见。如果没有 volatile
,读者可能会看到一些未更新的值。
回答你的问题:是的,我使用 volatile
变量来控制某些代码是否继续循环。该循环测试 volatile
值,如果为true
则继续。可以通过调用“stop”方法将条件设置为false
。循环检测到 false
并在 stop 方法完成执行后测试值时终止。
我强烈推荐的书“Java Concurrency in Practice”对 volatile
给出了很好的解释。这本书的作者是问题中引用的 IBM 文章的同一个人(事实上,他在那篇文章的底部引用了他的书)。我对 volatile
的使用被他的文章称为“模式 1 状态标志”。
如果您想了解更多关于如何 volatile
在幕后工作,请阅读 the Java memory model 。如果你想超越这个水平,请查看一本好的计算机架构书籍,例如 Hennessy & Patterson并了解缓存一致性和缓存一致性。
关于java - volatile 关键字有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58054940/