单核易失性 cpu java

volatile in single core cpu java

(在单个 CPU 的情况下)用于理解 volatile -我知道 volatile 强制线程使用主内存并且不会在其本地内存中保留副本。

在其中一个 Whosebug post 中,我看到 java 线程使用 CPU 缓存并使用 volatile 它将强制使用主内存

Thread Caching and Java Memory model

如果是这种情况,那么内存可见性应该没有问题,因为一个线程可以看到另一个线程写入的值(假设在单个 CORE CPU 上我们将有单个缓存)。所以 volatile 对单个 CPU?

有用

首先,volatile不强制线程使用主内存。它强制线程的行为就好像它们被迫使用主内存一样。这很重要,因为实际使用主内存会减慢现代系统的速度。幸运的是,这绝对不会发生。

其次,CPU 有多少实际核心并不重要。单核 CPU 可以完美地模拟双核 CPU,如果 JVM 实现愿意,它可以自由地做到这一点。进行某种形式的同步的要求是 Java 语言要求,并且独立于硬件 - Java 的全部要点之一是您不必担心这一点。