public class TestVolatile {
public static void main(String[] args) {
ThreadDemo td = new ThreadDemo();
new Thread(td).start();
System.out.println("判断JDK版本:"+System.getProperty("java.version")); //判断JDK版本
System.out.println("判断是32位还是64位 : "+System.getProperty("sun.arch.data.model")); //判断是32位还是64位
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;
}
}
上面代码flag变量是否加volatile在32位win7系统32位jdk运行结果都是一样,都会打印出“------------------”。
运行结果:
在64位jdk里flag变量不加volatile的运行结果:
判断JDK版本:1.8.0_141
在64位jdk里flag变量加volatile的运行结果:
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。