为什么打印语句,会导致上下文切换?
public void test() {
new Thread(new Runnable() {
@Override
public void run() {
while (age == 0) {
// System.out.println(" "); //ctx change
}
System.out.println(age);
}
},"t1").start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.println(e);
}
age = 1;
}
多线程的内存可见性和上下文有什么关系??
原因是:
println方法里面是加了同步锁的,每次会清空工作内存,再次从主内存读取值,所以可以读取最新的age值