关于第一个例子的问题
来源: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如果能解决问题,那么就是同一个问题。
00
相似问题