前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >volatile关键字的作用和原理「建议收藏」

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

作者头像
全栈程序员站长
发布2022-09-03 17:10:50
8450
发布2022-09-03 17:10:50
举报
文章被收录于专栏:全栈程序员必看

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

文章目录

一、volatile关键字的作用

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

二、volatile的底层原理

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

三、volatile的适用场景

  • 1、变量的修改不依赖于变量本身 像是i++、i+=这类的操作在多线程下都是不能保证变量的原子性的。
  • 2、该变量没有包含在具有其他变量的不变式中

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月3,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、volatile关键字的作用
  • 二、volatile的底层原理
  • 三、volatile的适用场景
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档