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