如果我在单核机器上运行应用程序,是否有任何用途的volatile关键字?

Bis*_*der 1 java multithreading volatile cpu-cache

我最近熟悉了volatile关键字,我发现直接从主内存中读取不会导致不一致和所谓的可见性问题.

我相信CPU缓存并不特定于任何线程.所以我想知道这个volatile关键字是否会在单一处理器中有用?

rua*_*akh 5

硬件级并发显然是规范动机的重要组成部分,但规范很清楚,这些要求适用于整个系统; 因此,例如,JVM的"即时"(JIT)编译器可以合法地优化等效的

while (this.var) {
    ... code that provably never modifies var ...
}
Run Code Online (Sandbox Code Playgroud)

相当于

if (this.var) {
    while (true) {
         ... code that provably never modifies var ...
    }
}
Run Code Online (Sandbox Code Playgroud)

如果var不是volatile.