volatile具有内存可见性的语义。基本上,
volatile字段的值对所有读取器(尤其是其他线程)在写入操作完成后变为可见。没有
volatile,读者可能会看到一些未更新的值。
回答你的问题:是的,我使用一个
volatile变量来控制某些代码是否继续循环。循环测试该
volatile值,如果为,则继续
true。可以false通过调用“停止”方法将条件设置为。
false在stop方法完成执行之后,当循环测试值时,该循环将看到并终止。
我强烈推荐的书“
Java Concurrency in Practice”很好地解释了
volatile。这本书是由撰写该问题中引用的IBM文章的同一人撰写的(实际上,他在该书的底部引用了他的书)。我使用的
volatile是他的文章所说的“模式1状态标志”。
如果你想了解有关幕后
volatile工作原理的更多信息,请阅读Java内存模型。如果你想超越该级别,请阅读
Hennessy&Patterson这样的优秀计算机体系结构书籍,并阅读有关缓存一致性和缓存一致性的信息。



