循环读取volatile 变量 对volatile修饰的变量每次都会从主内存读取
主要是因为 i aa 在同一个缓存行中 每次读取都会附带更新aa
所以 等线程二 更新aa 这个不会立即刷新 主要是后面的println()语句中加锁了 会强制刷新该线程
public void println(boolean x) {
synchronized (this) { //这里会刷新当前线程工作空间 aa就写到主内存中 然后就读取跳出
print(x);
newLine();
}
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…