public class TestVolatile {
public static void main(String[] args) {
ThreadDemo td = new ThreadDemo();
new Thread(td).start();
while(true){
// 注释后,程序死循环。去掉注释,程序正常结束。据说因为while(true)执行速度太快的原因。求解释 //System.out.println("!!");
if(td.isFlag()){
System.out.println("------------------");
break;
}
}
}
}
class ThreadDemo implements Runnable {
private boolean flag = false;
@Override
public void run() {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
}
flag = true;
System.out.println("flag=" + isFlag());
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
}
下图为注释的运行结果,显示一直没有结束。这个可以理解。但是为什么加了一句打印,程序就可以结束呢?