volatile与JMM(二)

简介: 问:volatile凭什么可以保证可见性和有序性答: 内存屏障

什么是内存屏障

image.png

内存屏障的分类

粗分为两种:

  1. 读屏障

在读指令之前插入读屏障,让工作内存或者cpu高速缓存数据失效,重新去主内存中获取罪行的数据

  1. 写屏障

在写指令之后插入写屏障,强制把写缓冲区的数据刷回到主内存

在nusafe.class中可以查看源码。

image.png

细分为四种:

image.png

目录
相关文章
|
9月前
|
缓存
|
10月前
|
缓存 Java 编译器
05.深入理解JMM和Happens-Before
大家好,我是王有志。今天我们一起来学习Java并发编程中最重要的两个理论知识JMM和Happens-Before原则。
65 1
05.深入理解JMM和Happens-Before
|
10月前
|
存储 缓存 Java
到底什么是内存可见性?
到底什么是内存可见性?
86 0
|
11月前
|
存储 缓存 Java
关于JMM的理解
JMM是java内存模型,它描述的是和多线程相关的一组规范。通过这组规范定义了程序中对各个变量的访问方式。保证了不同jvm运行并发程序的结果的一致性和可靠性。
63 0
|
存储 SQL 缓存
|
缓存 Java
内存可见性引发的思考
内存可见性引发的思考
内存可见性引发的思考
|
Java 编译器
【多线程:volatile】可见性
【多线程:volatile】可见性
117 0
|
存储 SQL Java
理解JMM和Volatile
理解JMM和Volatile
102 0
|
缓存 Java
Java内存模型之可见性
Java内存模型之可见性
112 0