并发JavaJava 并发
- 分类
- Java 并发
- 难度
- 未设置
- 来源数
- 1
- 更新时间
- 2026/03/28 21:25
答案
当我们对volatile修饰的变量进行写操作的时候,JVM就会像系统发送一条lock前缀的命令,将这个变量的值写回到系统内存当中,而为了保证各个处理器缓存一致,实现了缓存一致性协议,各个处理器通过嗅探总线上传播的数据来检查自己的缓存是否过期,如果过期,则会将自己的数据设置为无效状态,当该CPU上的线程对这个数据进行读取时的时候,会重新从主内存当中读取数据,从而保证了数据的可见性。同时使用内存屏障来保证并发状态下的数据一致性。
相关题目(5)
Java 并发并发JavaJava 并发锁
Java 并发并发JavaJava 并发
Java 并发并发JavaJava 并发
Java 并发并发JavaJava 并发
有哪些支持并发的集合?共源 1
Java 并发并发JavaJava 并发
元信息
审核状态: active
关联来源: 1
来源面经题(0)
这道题目前没有手动沉淀的面经题来源。
来源(1)
Java八股(并发).md
knowledge_noteQuestion 32: volatile 如何保证可见性?
Source answer: 当我们对volatile修饰的变量进行写操作的时候,JVM就会像系统发送一条lock前缀的命令,将这个变量的值写回到系统内存当中,而为了保证各个处理器缓存一致,实现了缓存一致性协议,各个处理器通过嗅探总线上传播的数据来检查自己的缓存是否过期,如果过期,则会将自己的数据设置为无效状态,当该CPU上的线程对这个数据进行读取时的时候,会重新从主内存当中读取数据,从而保证了数据的可见性。同时使用内存屏障来保证并发状态下的数据一致性。
Reviewed answer: volatile 写会将最新值刷新到主内存,并通过缓存一致性机制使其他处理器缓存中的旧值失效;其他线程随后读取时会从主内存获取最新值。同时配合内存屏障保障相关内存语义。