volatile与JMM(二)

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

什么是内存屏障

image.png

内存屏障的分类

粗分为两种:

  1. 读屏障

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

  1. 写屏障

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

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

image.png

细分为四种:

image.png

目录
相关文章
|
6月前
|
缓存 安全 Java
简单了解下JMM解决什么问题
Java内存模型(JMM)是Java语言规范的一部分。JMM通过“happens-before”规则和内存屏障等机制,确保在多线程程序中,各线程对共享变量的操作行为符合预期。
58 3
|
8月前
|
存储 缓存 Java
深入理解JMM
深入理解JMM
263 2
|
9月前
|
Java 编译器
多线程(volatile)
多线程(volatile)
38 0
|
缓存 Java 编译器
|
缓存 Java 编译器
05.深入理解JMM和Happens-Before
大家好,我是王有志。今天我们一起来学习Java并发编程中最重要的两个理论知识JMM和Happens-Before原则。
146 1
05.深入理解JMM和Happens-Before
|
存储 缓存 Java
关于JMM的理解
JMM是java内存模型,它描述的是和多线程相关的一组规范。通过这组规范定义了程序中对各个变量的访问方式。保证了不同jvm运行并发程序的结果的一致性和可靠性。
124 0
|
存储 SQL 缓存
|
存储 缓存 人工智能
volatile(三)
volatile 这个关键字大家都不陌生,这个关键字一般通常用于并发编程中,是 Java 虚拟机提供的轻量化同步机制,你可能知道 volatile 是干啥的,但是你未必能够清晰明了的知道 volatile 的实现机制,以及 volatile 解决了什么问题,这篇文章我就来带大家解析一波。
volatile(三)
|
SQL 存储 算法
volatile详解
在单线程环境中,我们几乎用不到这个关键词,但是多线程环境中,这个关键词随处可见。而且也是面试的常客。总的来说,volatile有以下三个特性: 保证可见性; 不保证原子性; 禁止指令重排。 下面就来详细的说说这三个特性。
volatile详解