JAVA语言-volatile
金延鑫 2018-04-04 来源 : 阅读 1395 评论 0

摘要:在学习JAVA语言时,我们要了解共享数据安全的三个特性:原子性,可见性,有序性。 当保证了以上三个特性时,多线程并发并不会对数据造成影响。 volatile能保证可见性和有序性,但是不能保证原子性。因此在有volatile修饰变量的时,在多线程编程中,要考虑到保证整体变量的原子性,才能保证共享数据的安全性。 让我们在JAVA语言的路上能够越走越远。

共享数据安全的三个特性:原子性,可见性,有序性。 
当保证了以上三个特性时,多线程并发并不会对数据造成影响。 

volatile能保证可见性和有序性,但是不能保证原子性。因此在有volatile修饰变量的时,在多线程编程中,要考虑到保证整体变量的原子性,才能保证共享数据的安全性。 

question1:volatile的工作原理是什么? 
        观察加入volatile关键字和没有加入volatile关键字时所生成的汇编代码发现,加入volatile关键字时,会多出一个lock前缀指令。 
1:volatile保证重排序。它确保指令重排序时不会把其后面的指令排到lock标记指令之前的位置,也不会把前面的指令排到其后面;即在执行到带lock前缀的这句指令时,在它前面的操作已经全部完成。 
2:volatile保证可见性。它会强制将对缓存的修改操作立即写入主存,同时会将其他线程缓存行中内容标记为无效状态,因此其他线程操作变量时,必须重新从主内存中读取变量的值。 

question2:volation与synchronized的区别? 
volitale与synchronized的区别: 
1:volatile轻量级,只能修饰变量。 
      synchronized重量级,可以修饰方法和代码块。 
2:volatile只能保证数据的可见性和有序性,不能用来保证原子性,因为多个线程并发访问volatile修饰的变量不会阻塞。(不能保证原子性:要么全部执行,要么都不执行) 
      synchronized不仅保证可见性,而且还保证原子性,因为,只有获得了锁的线程才能进入临界区,从而保证临界区中的所有语句都全部执行。多个线程争抢synchronized锁对象时,会出现阻塞。 

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言JAVA频道!

本文由 @职坐标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论
本文作者 联系TA

擅长与学生或家长及时有效沟通

  • 10
    文章
  • 7885
    人气
  • 95%
    受欢迎度

已有19人表明态度,95%喜欢该老师!

进入TA的空间
求职秘籍 直通车
  • 索取资料 索取资料 索取资料
  • 答疑解惑 答疑解惑 答疑解惑
  • 技术交流 技术交流 技术交流
  • 职业测评 职业测评 职业测评
  • 面试技巧 面试技巧 面试技巧
  • 高薪秘笈 高薪秘笈 高薪秘笈
TA的其他文章 更多>>
JAVA语言-类和对象
经验技巧 100% 的用户喜欢
匿名对象,内部类,静态内部类,static关键字-JAVA从入门到精通
经验技巧 0% 的用户喜欢
JAVA语言-String类的常用方法
经验技巧 0% 的用户喜欢
JAVA从入门到精通-抽象类
经验技巧 0% 的用户喜欢
JAVA语言程序设计-单Client与Server的单向通信和双向通信
经验技巧 0% 的用户喜欢
其他海同师资 更多>>
吕益平
吕益平 联系TA
熟悉企业软件开发的产品设计及开发
孔庆琦
孔庆琦 联系TA
对MVC模式和三层架构有深入的研究
周鸣君
周鸣君 联系TA
擅长Hadoop/Spark大数据技术
范佺菁
范佺菁 联系TA
擅长Java语言,只有合理的安排和管理时间你才能做得更多,行得更远!
程光淼
程光淼 联系TA
精通C、C++等语言、智能芯片开发
经验技巧30天热搜词 更多>>

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程