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

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

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

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


相关推荐

  • Lambda plus: 云上大数据解决方案

    Lambda plus: 云上大数据解决方案本文会简述大数据分析场景需要解决的技术挑战,讨论目前主流大数据架构模式及其发展。最后我们将介绍如何结合云上存储、计算组件,实现更优的通用大数据架构模式,以及该模式可以涵盖的典型数据处理场景。大数据处理的挑战现在已经有越来越多的行业和技术领域需求大数据分析系统,例如金融行业需要使用大数据系统结合VaR(valueatrisk)或者机器学习方案进行信贷风控,零售、餐饮行业需要大数据系统…

    2022年6月2日
    32
  • v型密封圈的使用方法_橡胶密封圈标准

    v型密封圈的使用方法_橡胶密封圈标准充气密封圈到底能够密封什么呢?到底什么地方需要充气密封圈呢?我们带着问题来看下面的文章:一、充气密封圈定义简介:充气密封圈在自然状态下密封圈的可伸缩部分隐藏在凹槽内,当通过气嘴向密封圈充气时,密封圈因受内压力作用而发生变形,中间部分向外胀起,与另一密封面紧密接触,从而起到密封作用。需要解除密封状态时,通过气嘴排出密封圈内高压气体,膨胀部分受橡胶弹性作用自动回缩到凹槽内,与密封面脱离。二、充气密封圈…

    2022年10月3日
    4
  • Python爬虫:URL管理器及其实现方式、网页下载器、网页解析器原理及其实现原理!

    Python爬虫:URL管理器及其实现方式、网页下载器、网页解析器原理及其实现原理!Python爬虫之URL管理器:Python爬虫:URL管理器实现方式:Python爬虫之网页下载器:urllib2实现网页下载器的三种方法:具体代码:              Python网页解析器:…

    2022年5月2日
    82
  • pycharm2021激活码 3月最新注册码「建议收藏」

    pycharm2021激活码 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    315
  • 详解Java拦截器

    详解Java拦截器Interceptorsareusedtoimplementcross-cuttingconcerns,suchaslogging,auditing,andsecurity,fromthebusinesslogic.InJavaEE5,InterceptorswereallowedonlyonEJBs.InJavaEE6,Interceptorsbecameanewspecificationofitsown,abstracte.

    2022年5月2日
    92
  • 数据库三大范式通俗解释[通俗易懂]

    数据库三大范式通俗解释[通俗易懂]一范式就是属性不可分割。属性是什么?就是表中的字段。不可分割的意思就按字面理解就是最小单位,不能再分成更小单位了。这个字段只能是一个值,不能被拆分成多个字段,否则的话,它就是可分割的,就不符合一范式。不过能不能分割并没有绝对的答案,看需求,也就是看你的设计目标而定。举例:学生信息组成学生信息表,有姓名、年龄、性别、学号等信息组成。姓名不可拆分吧?所以可以作为该表的一个字段。但我要说这…

    2025年7月14日
    5

发表回复

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

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