volatile关键字的作用和原理「建议收藏」

volatile关键字的作用和原理「建议收藏」文章目录一、volatile关键字的作用二、volatile的底层原理三、volatile的适用场景一、volatile关键字的作用二、volatile的底层原理三、volatile的适用场景

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


一、volatile关键字的作用

  • 1、保证变量写操作的可见性;
  • 2、保证变量前后代码的执行顺序;

二、volatile的底层原理

被volatile修饰的变量被修改时,会将修改后的变量直接写入主存中,并且将其他线程中该变量的缓存置为无效,从而让其它线程对该变量的引用直接从主存中获取数据,这样就保证了变量的可见性。
但是volatile修饰的变量在自增时由于该操作分为读写两个步骤,所以当一个线程的读操作被阻塞时,另一个线程同时也进行了自增操作,此时由于第一个线程的写操作没有进行所以主存中仍旧是之前的原数据,所以当两个线程自增完成后,该变量可能只加了1。因而volatile是无法保证对变量的任何操作都是原子性的。

三、volatile的适用场景

  • 1、变量的修改不依赖于变量本身
    像是i++、i+=这类的操作在多线程下都是不能保证变量的原子性的。
  • 2、该变量没有包含在具有其他变量的不变式中
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • golang(5):编写WebSocket服务,client和html5调用

    golang(5):编写WebSocket服务,client和html5调用

    2022年1月27日
    365
  • 签名字体怎么练_练字方法练自己名字签字

    签名字体怎么练_练字方法练自己名字签字导读:今天来给大家分享【签名字体怎么练】技法来源于网络,只是分享学习一下。感谢大家的支持,如果,你在签名字体上有什么不懂的可以来询问我的。谢谢大家的浏览!签名字体怎么练1、签名也是字体造型的再创作,因此签名设计对一个人的书法水平和理解能力还是有一定要求的。在此,我建议大家可以先练习好楷书和行书。如果真的没那个天分,就好好练习数字1.2.3.4.5.6.7.8.9。为什么练习数字可以对设计签名有帮助呢,因为数字和汉字笔画在书写方面具有一定的相似性,可以借鉴。同时帮助您练顺运笔。2、要想设计好签名,就要

    2022年9月6日
    4
  • docker部署Discuz论坛

    docker部署Discuz论坛

    2021年5月29日
    158
  • matlab画三维图像例题_matlab画三维曲面

    matlab画三维图像例题_matlab画三维曲面我可能真的太闲了吧···在网上看到这图觉得挺好看:t=0:pi/360:2*pi;x=sin(t);y=cos(t);z=2*x.^2+y.^2;figureplot3(x,y,z,’Color’,’r’,’LineWidth’,2);xlabel(‘x’);ylabel(‘y’);zlabel(‘z’);title(‘z=(cost)^2+2*(sint)^2’);ax…

    2022年10月11日
    3
  • JS 中 scrollWidth、scrollHeight、scrollLeft 、scrollTop 详解

    JS 中 scrollWidth、scrollHeight、scrollLeft 、scrollTop 详解1.总述在JS中scrollWidth、scrollHeight、scrollLeft 、scrollTop属性在做一些复杂的交互效果中是非常常用的,因此在本博文中详细的介绍并给出实例。以上的4个属性是成对出现的,因此下面介绍中也成对的介绍,在实例中为了减少代码量,我直接用的id,实际开发中不推荐。2.scrollWidth和scrollHeight2.1概念element…

    2022年7月23日
    8
  • floyed详解[通俗易懂]

    floyed详解[通俗易懂]显然Floyed算法是一个简短而好理解的算法,这里指的好理解是因为Floyed的代码长度不大,实在没理解都可以背下来,所以说是好理解,实际上是真的好理解吗?我们来看看最基础的FloyedFloyed是什么?自然是用来求多源最短路的啦,时间效率是O(n^3),有人会问那我不对每个点做一遍SPFA或dijkstra堆优化,时间效率是O(n^2logn)那不是快很多?实际上因为Floyed

    2022年6月16日
    24

发表回复

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

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