原始代码
public class VolatileDemo extends Thread {
public boolean flag = true;
public void setFlag(boolean flag) {
this.flag = flag;
}
@Override
public void run() {
System.out.println("===start===");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
setFlag(false);
}
public static void main(String[] args) {
VolatileDemo volatileThread = new VolatileDemo();
volatileThread.start();
System.out.println("flag值:"+volatileThread.flag);
System.out.println("===end===");
while (volatileThread.flag) {
}
}
}
循环无法退出
添加volatile关键字
public volatile boolean flag = true;