volatile 关键字有什么用?

2022-08-31 04:05:24

在今天的工作中,我遇到了Java中的关键字。由于不是很熟悉它,我找到了这个解释volatile

鉴于该文章详细解释了有问题的关键字,您是否曾经使用它,或者您是否曾经看到过可以以正确方式使用此关键字的情况?


答案 1

volatile具有内存可见性的语义。基本上,在字段的写入操作完成后,字段的值对所有读取器(特别是其他线程)可见。如果没有,读者可以看到一些未更新的值。volatilevolatile

回答你的问题:是的,我使用一个变量来控制某些代码是否继续循环。循环测试该值,如果它是 ,则继续。可以通过调用“stop”方法将条件设置为。当循环在 stop 方法完成执行后测试值时,该循环将看到并终止。volatilevolatiletruefalsefalse

我强烈推荐的“Java并发实践”一书很好地解释了.这本书是由撰写IBM文章的同一个人写的,该文章在问题中被引用(事实上,他在该文章的底部引用了他的书)。我使用的是他的文章所说的“模式1状态标志”。volatilevolatile

如果您想了解有关易失性如何在引擎盖下工作的更多信息,请阅读Java内存模型。如果你想超越这个水平,看看像轩尼诗和帕特森这样的好计算机架构书,并阅读有关缓存一致性和缓存一致性的信息。


答案 2

“...volatile 修饰符保证任何读取字段的线程都将看到最近写入的值。- Josh Bloch

如果你正在考虑使用 ,请阅读处理原子行为的java.util.concurrent包。

维基百科上关于单例模式的帖子显示使用中不稳定。volatile