voliate关键字[通俗易懂]

voliate关键字[通俗易懂]1.voliate简介在上一篇文章中我们深入理解了java关键字synchronized,我们知道在java中还有一大神器就是关键volatile,可以说是和synchronized各领风骚,其中奥妙,我们来共同探讨下.通过上一篇的文章我们了解到synchronized是阻塞同步的,在线程竞争激烈的情况下会升级为重量级锁。而voliate就可以说是java虚拟机提供的最轻量级的同步锁。但它同时…

大家好,又见面了,我是你们的朋友全栈君。

1.voliate简介
在上一篇文章中我们深入理解了java关键字synchronized,我们知道在java中还有一大神器就是关键volatile,可以说是和synchronized各领风骚,其中奥妙,我们来共同探讨下.

通过上一篇的文章我们了解到synchronized是阻塞同步的,在线程竞争激烈的情况下会升级为重量级锁。而voliate就可以说是java虚拟机提供的最轻量级的同步锁。但它同时不容易被正确理解,也至于在并发编程中有很多程序员遇到线程安全的问题就会使用sychronized。Java内存模型告诉我们,各个线程会将共享变量从主内存拷贝到工作内存,然后执行引擎会基于工作内容中的数据进行操作处理。线程在工作内存进行操作后何时会写到主内存中?这个时机对于普通变量是没有规定的,而针对voliate修饰的变量给java虚拟机特殊的约定,线程对voliate变量的修改会立即被其他线程感知,既不会出现数据的可见性。

2.voliate实现原理
volatile是怎样实现了?比如一个很简单的Java代码:

instance = new Instancce() //instance是volatile变量

在生成汇编代码时会在volatile修饰的共享变量进行写操作的时候会多出Lock指令(具体的大家可以使用一些工具去看一下,这里我就把结果说出来)。我们想这个Lock指令肯定有神奇的地方,那么Lock前缀的指令在多核处理器下会发生什么事?主要由两个方面的影响:

将当前处理器缓存行的数据写回系统内存;
这个写回内存的操作会使得其他CPU里缓存了该内存地址的数据无效
彻底理解voliate

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/131166.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • MySQL多表查询核心优化

    MySQL多表查询核心优化在一般的项目开发中,对数据表的多表查询是必不可少的。而对于存在大量数据量的情况时(例如百万级数据量),我们就需要从数据库的各个方面来进行优化,本文就先从多表查询开始。

  • 罗斯-布朗[通俗易懂]

    罗斯-布朗[通俗易懂]布朗对于法拉利车队真正的贡献,却在于他把冷静、沉着、理智的“英国作风”融入到了法拉利传统的热情、奔放的意大利性格中。舆论认为,在改造法拉利的过程,车队经理托德是最关键的因素,但布朗冷静的头脑和声音更是

  • Linux安装vim编辑器_linux系统安装jdk教程

    Linux安装vim编辑器_linux系统安装jdk教程1、yum下载vimyum-yinstallvim*2、安装完之后开始配置vimvim/etc/vimrc3、打开文件后,添加如下代码setnu”设置显示行号setshowmode”设置在命令行界面最下面显示当前模式等setruler”在右下角显示光标所在的行数等信息setautoindent”设置每次单击Enter键后,光标移动到下一行时与上一行的起始字符对齐syntaxon”即设置语法检测,当编辑C或者Shell脚本时,

    2022年10月24日
  • iptable命令参数详解

    iptable命令参数详解###还不够详细,后期补充###开放某端口:iptables-IINPUT-ptcp–dport9000-jACCEPT关闭某端口:iptables-DINPUT-ptcp–dport80-jACCEPT屏蔽某个IP请求:iptables-IINPUT-s192.168.0.1-jDROP(屏蔽单个IP192.168.0.1…

  • Cadence IC设计环境搭建( IC617+MMSIM151+Calibre2015)

    Cadence IC设计环境搭建( IC617+MMSIM151+Calibre2015)做IC版图设计,必不可少的环境搭建,是在Linux上进行开发,此类的安装教程网上比较少,自己也是跌跌撞撞,最终耗了一天的时间才装好呵呵呵~,期间主要参考了下面两篇文章。1.知乎文章2.简书文章3.安装需要的文件:链接:https://pan.baidu.com/s/14acWcuHvXGRkqf_8zkveDQ提取码:uahd以下为我的使用画面…

  • 关于height:100%和height:100vh的区别

    关于height:100%和height:100vh的区别关于height:100%和height:100vh的区别vh就是当前屏幕可见高度的1%,也就是说height:100vh==height:100%;但是当元素没有内容时候,设置height:100%,该元素不会被撑开,此时高度为0,但是设置height:100vh,该元素会被撑开屏幕高度一致。…

发表回复

您的电子邮箱地址不会被公开。

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