JMM导读_jmm是什么意思

JMM导读_jmm是什么意思JMM优秀文章导读。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一. volatile

理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步。

前文提到过,x86处理器仅会对写-读操作做重排序。X86不会对读-读,读-写和写-写操作做重排序,因此在x86处理器中会省略掉这三种操作类型对应的内存屏障。在x86中,JMM仅需在volatile写后面插入一个StoreLoad屏障即可正确实现volatile写-读的内存语义。这意味着在x86处理器中,volatile写的开销比volatile读的开销会大很多(因为执行StoreLoad屏障开销会比较大)。

二. 锁

当线程释放锁时,JMM会把该线程对应的本地内存中的共享变量刷新到主内存中;当线程获取锁时,JMM会把该线程对应的本地内存置为无效。从而使得被监视器保护的临界区代码必须要从主内存中去读取共享变量。

对比锁释放-获取的内存语义与volatile写-读的内存语义,可以看出:锁释放与volatile写有相同的内存语义;锁获取与volatile读有相同的内存语义。

下面对锁释放和锁获取的内存语义做个总结:

  •  线程A释放一个锁,实质上是线程A向接下来将要获取这个锁的某个线程发出了(线程A对共享变量所做修改的)消息。
  • 线程B获取一个锁,实质上是线程B接收了之前某个线程发出的(在释放这个锁之前对共享变量所做修改的)消息。
  • 线程A释放锁,随后线程B获取这个锁,这个过程实质上是线程A通过主内存向线程B发送消息。

二. JMM

  1. 深入理解java内存模型(一)——基础
  2. 深入理解java内存模型(二)——重排序
  3. 深入理解java内存模型(三)——顺序一致性
  4. 深入理解java内存模型(四)——volatile
  5. 深入理解java内存模型(五)——锁
  6. 深入理解java内存模型(六)——final
  7. 深入理解java内存模型(七)——总结

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197094.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【Unity3D开发小游戏】《文字冒险游戏》Unity开发教程

    【Unity3D开发小游戏】《文字冒险游戏》Unity开发教程基本程序设计(故事卡)游戏会为玩家呈现一个“故事卡”。故事卡上包含一些文字,其中一部分是用于描述玩家当前的状态,另外一部分是在当前情况下玩家可以做出的一系列选择。根据玩家的不同选择,剧情也会按照不同的分支向前发展,并持续出现新的卡片与选择,直到最终的卡片不再有新的选择,则游戏结束。制作一张“故事卡”很简单。根据上诉需求,我们新建StoryCard脚本,脚本代码如下:StoryCard在…

    2022年5月26日
    56
  • 谷歌学术403异常处理「建议收藏」

    谷歌学术403异常处理「建议收藏」谷歌学术403异常处理解决方法解决方法百度了几个方法,下面的可以解决问题:首先要在Chrome上安装Ghelper插件在Ghelper上进行注册下载地址:地址下载之后安装方式:1.打开你的Chrome浏览器的更多工具>扩展程序页面.或者直接在网址输入:chrome://extensions/2.这个页面点击“添加已解压的扩展程序”,如果没有,在右边有一个“开发者模式”开关,要打开.3。选择本次下载包里的ghelper_source目录4.或者将下载包中的CRX文件

    2022年10月11日
    4
  • 电商网站的价格大概多少钱一个_电子商务网站报价

    电商网站的价格大概多少钱一个_电子商务网站报价做一个电商网站需要多少钱?一、服务器购买、微信公众号认证、短信接口、物流接口、第三方支付接口费率等等。拿服务器来说,有一般IDC公司的虚拟主机,云虚拟主机、独立ECS,价格会有天壤之别,那具体根据您后期访问用户量和稳定性本身来选择,,几百到几千不等。二、功能开发费用电商平台的主要费用就是根据用户需要哪些功能进行定制开发来评估费用的,这其实又大致分为两大类。第一,必备功能。电商平台里面的必备功能有:会员注册登录、商品分类展示、在线支付购物车、订单管理等。第二、体验功能。体验功能主要是便于电商平台

    2022年10月1日
    3
  • 对数及运算法则_log公式运算法则

    对数及运算法则_log公式运算法则1.对数源于指数,是指数函数反函数因为:y=ax所以:x=logay2.对数的定义【定义】如果N=ax(a>0,a≠1),即a的x次方等于N(a>0,且a≠1),那么数

    2022年8月1日
    4
  • win10 使用 cmd 查看端口占用情况,关闭占用端口的相关程序「建议收藏」

    win10 使用 cmd 查看端口占用情况,关闭占用端口的相关程序「建议收藏」前言:工作中常用端口偶尔被占用,特写此文章记录1.查看被占用的端口号执行命令:netstat-ano|findstr端口号2.通过PID查看占用端口的程序执行命令:tasklist|findstrPID3.通过PID关闭占用的程序此方法可以通过cmd关闭也可以通过任务管理器关闭CMD执行命令:taskkill/T/F/PIDPID通过任务管理器找到对应的PID程序右键结束程序…

    2022年5月12日
    45
  • Python之operator库

    operator库常用方法operator.itemgetter返回一个可调用对象,获取项目使用的操作数的__getitem__()方法操作数。如果指定了多个项,则返回一个查找值元组。>&

    2021年12月19日
    70

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号