既然 CPU 有 MESI 协议保障多核心缓存一致性,为什么 JMM 还需要考虑线程间共享变量的可见性问题呢? 十万个为什么 | 2025-3-17 22:16 | 0 | 32 500 字 | 2 分钟 这个问题是在学习 CPU 的缓存一致性中冒出来的。现在网络上大多数对于 volatile 功能的描述是下面这样的: volatile 提供两大功能:实现线程间共享变量的可见性 + 禁止指令的重排序。这两大功能是通过在对 volatile 变量的操作前后添加对应的内存屏障实现的,内存屏障最粗略分有两类,读内存屏障和写内存屏障,作用分别是从主内存中读取… MESIvolatile