栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

共享模式之内存

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

共享模式之内存

四、共享模式之内存 4.1java内存模型

JMM即Java Memory Model,他定义了主存,工作内存抽象概念,底层对应着cpu寄存器,缓存、硬件内存、cpu指令优化等。

JMM主要体现在以下几个方面

  • 原子性:保证指令不会受到线程上下文切换
  • 可见性:保证指令不会受到cpu缓存的影响
  • 有序性:保证指令不会受到指令cpu指令并行优化的影响
4.2可见性

退不出的循环

Volatile原理
  • volatile的底层实现原理是内存屏障
    • 对volatile变量的写指令后会加入写屏障
    • 对volatile变量的读指令前会加入读屏障
volitail变量的如何保证可见性
  • 写屏障,保证在该屏障之前,对共享变量的改动,都同步到主存当中
private boolean read == false;
public void test(){
    num = 2;
    read = true; //对共享变量进行了读,那么从这一句之后就开始加入了写屏障
    //写屏障
}
  • 读屏障,保证了在该屏障之后,对共享变量的读取,加载的都是主存中最新的数据
public void actors(){
    //读屏障
    //.....这后面都是读屏障的内容
    if(ready){
        r=num+num;//像这种num共享变量都是从主存中拿到的最新数据
    }
}
volatile变量如何保证有序性
  • volatile写屏障保证了写屏障之前的指令不会重排到写屏障之后
  • volatile读屏障保证了读屏障之后的指令不会重排到读屏障之前
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/874598.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号