gpt4 book ai didi

java - Java 中的 Volatile 关键字

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:41:27 25 4
gpt4 key购买 nike

我和我的老师就 java 中的 volatile 关键字发生了一点争论。当一个变量声明为 volatile 时,这样说是否正确:

The value of this variable will never be cached thread-locally: all reads and writes will go straight to the "main memory".

我的老师的意见是:

volatile keyword does not promise the value of the variable will be saved in the main memory.

有人可以解决我们的冲突吗?谢谢!

最佳答案

volatile等关键字的具体含义,看Java语言规范看官方含义。

JLS paragraph 8.3.1.4解释 volatile 的含义:

A field may be declared volatile, in which case the Java Memory Model ensures that all threads see a consistent value for the variable (§17.4).

Paragraph 17.4解释 Java 内存模型。内存模型为您提供了关于程序中每条语句之后数据会发生什么的某些保证。

如果你仔细研究,你会发现 volatile 意味着如果你写入一个 volatile 变量,你可以保证其他线程会看到写入的内容。有意未指定在实践中如何实现。它可以通过强制写入主内存来实现,但 JVM 实现者可以自由选择不同的、可能更有效的机制。

所以,严格来说,你的老师是对的。这并不一定意味着该值已写入主内存;尽管在实践中很可能是这种情况 - 但它取决于特定的 JVM 实现。

关于java - Java 中的 Volatile 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42782571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com