一尘不染

Java-volatile关键字对

java

今天的工作中,我遇到了volatileJava中的关键字。不太熟悉,我发现了以下解释:

Java理论与实践:管理波动

鉴于该文章详细解释了所讨论的关键字,您是否曾经使用过它,或者是否曾经遇到过可以正确使用此关键字的情况?


阅读 300

收藏
2020-02-25

共1个答案

一尘不染

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

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

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

如果你想了解有关幕后volatile工作原理的更多信息,请阅读Java内存模型。如果你想超越该级别,请阅读Hennessy&Patterson这样的优秀计算机体系结构书籍,并阅读有关缓存一致性和缓存一致性的信息。

2020-02-25