讨论一个 Java 多线程相关的问题
存在线程 A、B, 共享变量 v , B 会循环读取变量 v
线程 A 对共享变量 v 进行了修改
线程 B 什么情况下能读到线程 A 修改后的值
测试代码如下
目前已知测试
循环体内为空的时候不停
循环体内为 Object obj = new Object(); 的时候不停
循环体内为 System.out.println(); 的时候停
循环体内为 Thread.sleep(1000); 的时候停
循环体内为 File file = new File("C:\work\test.txt"); 的时候停
public class TestDemo {
private static boolean keepRunning = true;
public static void main(String[] args) throws Exception {
new Thread(
()->{
while (keepRunning){
//do something
}
System.out.println("循环停止");
}
).start();
Thread.sleep(1000);
keepRunning = false;
System.out.println("下达循环停止指令");
}
}