我想知道写入易失性变量是否会迫使jvm将所有非易失性变量同步到内存中,因此,例如,在以下代码中会发生什么:
volatile int x;
int y;
y=5;
x=10;
x将被写入内存,但是y会发生什么呢?它也会被写入记忆吗?
是的,根据Java语言规范(第三版)的规则——特别是第17.4.4节——如果每个线程尝试读取x
的新值,那么它们随后也会看到y
的新值。不读取x
的线程不保证受到影响。