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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nodejs爬虫与python爬虫_不再羡慕python,nodejs爬虫撸起袖子就是干,爬取宅男女神网大姐姐的高清图片!…[通俗易懂]

    nodejs爬虫与python爬虫_不再羡慕python,nodejs爬虫撸起袖子就是干,爬取宅男女神网大姐姐的高清图片!…[通俗易懂]年前无心工作,上班刷知乎发现一篇分享python爬虫的文章。感觉他爬取的网站里的妹子都好好看哦,超喜欢这里的,里面个个都是美女。无奈python虽然入门过但太久没用早已荒废,最近在用nodejs重构后台接口,遂尝试用nodejs实现个爬虫。先上几张图:爬几个相册示范一下都是高清无码大图哦好了,开始准备工作吧,少年!喂!我说的是准备工作环境!你,你,还有你,你们把手上的纸巾放下!准备工作:系统环境:…

    2022年6月5日
    27
  • 瑞芯微rk3399pro_arm主板定制开发

    瑞芯微rk3399pro_arm主板定制开发深圳市宁远电子科技有限公司于2015年在中国广东省深圳市成立,公司自成立以来一直专注于工业嵌入式产品的软硬件研发和生产,以及相应的增值服务。公司拥有强大的研发技术实力,创始团队来自于华为,三星十年工作经验以上资深研发人员。  深圳市宁远电子科技有限公司专注于工来控制产品的研发,是ARM在中国最具实力的方案公司.  公司定位于中高端产品的研发,基于RK3288,RK3399等处理器,,开发了…

    2022年10月14日
    7
  • C语言—冒泡排序

    C语言—冒泡排序C语言排序算法-冒泡排序从键盘输入的10个整数按从小到大的顺序排序后输出#include<stdio.h> voidmain(){ intn[10]={25,35,68,79,21,13,98,7,16,62};//定义一个大小为10的数组 inti,j,temp; for(i=1;i<=9;i++)//外层循环是比较的轮数,数组内有10个数,那么就应该比较10-1=9轮 { for(j=0;j<=9-i;j++)

    2022年6月25日
    29
  • TCP和UDP的最完整的区别[通俗易懂]

    TCP和UDP的最完整的区别[通俗易懂]TCP和UDP两种协议的比较汇总

    2022年6月7日
    41
  • Android SDK下载和安装,以及部署「建议收藏」

    Android SDK下载和安装,以及部署「建议收藏」第一步:先到网站地址下载资源下载地址:https://www.androiddevtools.cn/第二步:选择具体版本资源下载第三步:点击启动安装SDKManager.exe选择相应的工具包进行下载对于扩展选项:这里建议全选分别选中每个License,分别设置为AcceptLicense[这样更方便快捷!!]确认好都勾选后,点击Install下载注意:下载可能比较慢,耗费时间长,最重要的是保证网络好,没下载成功,就重进重选重新下载…

    2022年7月19日
    19
  • Spring注解 @Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析…

    Spring注解 @Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier 解析…

    2022年2月22日
    49

发表回复

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

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