我想知道写一个volatile变量是否会强制jvm将所有非易失性变量同步到内存中,例如,在下面的代码中会发生什么:
volatile int x;
int y;
y=5;
x=10;
Run Code Online (Sandbox Code Playgroud)
x将被写入内存,但是会发生什么?它会被写入记忆吗?
是的,根据Java语言规范(第三版)的规则- 特别是第17.4.4节 - 每个看到新值的线程x随后也会看到新值,y如果他们试图读取它.x不保证不读取的线程会受到影响.
但请注意,第二版JLS 的内存模型中不存在此保证.在那里,易失性读取和写入对非易失性存储器访问的排序没有影响.
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |