请看以下代码
public class TestVolatile {
public static void main(String[] args) throws InterruptedException {
ThreadDemo td = new ThreadDemo();
new Thread(td).start();
Thread.sleep(1);
while(true){
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;
}
}
把Thread.sleep(1)
换成Thread.sleep(1000)
就能获取flag
修改后的值,即td.isFlag()
返回true
。
虽然看了Java内存模型的概念,但我不知道如何解释这段代码,谁能解释一下?
相关问题: Java多线程的工作内存是什么?
你得先说说你的预期效果是啥?问问题要问清楚啊