单核 jvm 并发:是否可以进行不可见更新?

Single core jvm concurrency: are invisible updates possible?

如果你有多个核心和 2 个线程共享一个非易失性字段(第一个只读取它,第二个进行一些写入),可能会出现第一个线程在第二个之后看不到该字段的实际值的情况线程更新它,因为这个新值可以存储在另一个核心的缓存中。

单核环境也是这样吗?不同的缓存是否是造成这种不一致的唯一原因(我现在不考虑竞争条件和其他并发问题)?

编译器可能会得出结论,变量不能在某个块内更改并优化额外的负载,从而防止它们被观察到,即使在单核环境中也是如此。

我想知道你为什么要问。您应该针对语言/java-内存模型的保证进行编程,而不是某些 platform/implementation-specific 行为。