volatile关键字有什么用处?

24 浏览
0 Comments

volatile关键字有什么用处?

今天上班时我遇到了Java中的volatile关键字。由于并不太熟悉它,我找到了这个解释链接。由于这篇文章详细解释了相关关键字,你是否曾经使用它,或者在正确的情况下可以使用它呢?

admin 更改状态以发布 2023年5月22日
0
0 Comments

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

如果您正在考虑使用volatile,请查阅处理原子行为的包java.util.concurrent

维基百科中关于单例模式的文章展示了volatile的使用。

0
0 Comments

volatile 具有内存可见性的语义。基本上,在对一个 volatile 字段执行写操作后,该字段的值将对所有读者(尤其是其他线程)变得可见。如果没有 volatile,读者可能会看到一些未更新的值。

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

Java并发编程实践》这本书非常推荐,在其中提供了对 volatile 的很好的解释。这本书是由那篇问题引用的 IBM 文章的作者写的(事实上,他在该文章底部引用了自己的书)。我使用 volatile 的方式是他的文章所称的 "模式 1 状态标志"。

如果想更深入地了解 volatile 在底层是如何工作的,可以查阅 Java 内存模型。如果想进一步掌握计算机体系结构,可以阅读一本好的计算机体系结构书籍,比如《Hennessy & Patterson》,并了解缓存一致性与缓存一致性。

0