最新|用Qwen3 Embedding+Milvus,搭建最强企业知识库!!
2026/8/27 14:49:25
volatile的可见性并非 “跳过缓存直接读写总线 / 主存”,而是通过两个机制强制缓存同步:
CPU 层面的硬件协议(Intel 架构为主),解决多核心缓存同步问题,核心逻辑:
volatile变量的缓存行(Cache Line),会将该缓存行标记为「已修改(Modified)」;volatile变量时,发现自己的缓存行失效,会主动丢弃私有缓存的旧值,从主存重新加载最新值。JVM 层面为volatile变量的读写添加的 “屏障指令”,禁止 CPU 重排序并强制缓存同步:
volatile变量写操作后,插入写屏障,强制将私有缓存中的修改刷回主存,且保证写操作之前的指令不会被重排序到屏障之后;volatile变量读操作前,插入读屏障,强制清空私有缓存的旧值,从主存重新加载最新值,且保证读操作之后的指令不会被重排序到屏障之前。以线程 A 修改volatile变量、线程 B 读取该变量为例:
volatile变量:volatile变量: