单核cpu java中的volatile

时间:2017-11-17 09:10:15

标签: java multithreading caching volatile

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

在其中一篇StackOverFlow文章中,我看到java线程使用CPU缓存并使用volatile它将强制使用主内存

Thread Caching and Java Memory model

如果是这种情况,则不应该存在内存可见性问题,因为一个线程可以看到由其他线程写入的值(假设在单个CORE CPU上我们将具有单个缓存)。所以volatile是usefule用于单CPU吗?

1 个答案:

答案 0 :(得分:3)

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

其次,CPU拥有多少实际内核并不重要。单核CPU可以完美地模拟双核CPU,如果需要,JVM实现可以自由地执行。进行某种形式的同步的要求是Java语言要求,并且与硬件无关 - Java的全部要点之一就是您不必担心这一点。