首页 > 试题广场 >

以下代码中,关于Java内存模型(JMM)的可见性保证,哪种

[单选题]
以下代码中,关于Java内存模型(JMM)的可见性保证,哪种说法是正确的?
class SharedData {
    int x = 0;
    volatile boolean ready = false;
    void write() {
        x = 42; // line 1
        ready = true; // line 2
    }
    void read() {
        if (ready) { // line 3
            System.out.println(x); // line 4
        }
    }
}
  • line 4可能输出0,因为x不是volatile
  • line 4一定输出42,因为volatile的happens-before保证
  • line 1和line 2可能被重排序,导致ready=true先于x=42执行
  • 即使ready为true,x的值也可能是0,因为缓存一致性协议不保证非volatile变量
  • 即使ready为true,x的值也可能是0,因为缓存一致性协议不保证非volatile变量
这题没有main方法怎么执行的?
发表于 2026-04-22 11:35:59 回复(0)