我想我理解单个变量的发生之前的关系。如果我写了一个 volatile 字段,该字段的所有后续读取都将包含这个新值。写入 avolatile
会跨越内存屏障并将新值刷新到主内存。
我仍然不清楚在所有其他情况下会发生什么 - 例如Thread.start()
,synchronized
或者新锁java.util.concurrent
。他们也跨越了记忆障碍是什么意思?哪些数据从本地缓存刷新到主存?换句话说,穿越的范围是什么?
是不是所有的东西都被冲洗掉了?现在回到volatile
,它刷新的不仅仅是单个volatile
字段吗?