类成员变量需要 Java "volatile"吗?

标签 java volatile

我有一个关于 Java“ volatile ”关键字的问题:

假设,我们有以下类:

public class BooleanValClass {

    private boolean bolVal = false;

    public boolean getVal() {
        return this.bolVal;
    }

    public void setVal(boolean val) {
        bolVal = val;
    }
}

现在,假设一个线程正在使用带有“ volatile ”关键字的此类:

private volatile BooleanValClass myClass = new BooleanValClass();

我是否还必须将“ volatile ”关键字附加到类“BooleanValClass”的成员字段“bolVal”,或者对象引用的“ volatile ”是否以某种“重定向”到类“BooleanValClass”的所有成员“?

谢谢, 汤姆

最佳答案

没有任何内容被重定向。 myClass 是 volatile 的,bolVal 则不是。 myClass 的赋值和读取工作是不稳定的。对 bolVal 的赋值/读取不会。

关于类成员变量需要 Java "volatile"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24160405/

相关文章:

java - 如何在 view.layout() 方法之后更新 View 位置?

java - 异步运行进程并从 stdout 和 stderr 读取

java - Java 中的 volatile int 是线程安全的吗?

c++ - 为什么 volatile int 可以转换为 int 而 volatile T 不能转换为 T?

java - BigDecimal 乘以 100 哪种方法更好?

Java:比较 Netbeans 中的内存堆转储

c++ - 为什么不能显式默认带有 volatile 参数的复制构造函数?

用于并发的 Java volatile

java - 使用 Java 的 volatile 关键字的不一致

java - 如何设置指定日期相同ID的闹钟?