关于第一个例子的问题

来源:5-3 面试官出难题:volatile关键字实现原理

彩虹甜筒

2022-01-20

public class Demo1Visibility {

    int i=0;
    public boolean isRunning = true;

    public static void main(String[] args) throws InterruptedException {
        Demo1Visibility demo = new Demo1Visibility();
        new Thread(() -> {
            System.out.println("程序执行到位置1...");
            while (demo.isRunning) {
                demo.i++;
            }
            System.out.println(demo.i);
        }).start();

        Thread.sleep(3000L);
        demo.isRunning = false;
        System.out.println("程序运行结束...");
    }
}

这里有一段类似代码,只开了一个线程,但是同样System.out.println(demo.i);没有执行,这个也是内存不一致导致的吗?

写回答

1回答

求老仙

2022-03-15

这个case我不太确定,因为平时不这样设计程序。 isRunning设置成volatile如果能解决问题,那么就是同一个问题。

0
0

笑傲Java面试 剖析大厂高频面试真题 秒变offer收割机

深度剖析大厂面试高频真题,让你秒变offer收割机

1783 学习 · 314 问题

查看课程