volatile和synchronized比较

volatile主要作用使变量在多个线程间可见,强制从公共内存中取到值

关键字volatile是线程同步的轻量级实现,性能比synchronized要好,volatile只能修饰于变量,而synchronized可以修饰方法、代码块。

多线程访问volatile不会发生阻塞,synchronized会出现阻塞

volatile能保证数据的可见性,但不能保证原子性,而synchronized可以保证原子性,也能间接保证可见性,因为它会将私有内存和公共内存中的数据做同步。

volatile解决的是变量在多个线程之间的可见性,而synchronized解决的是多个线程间访问资源的同步性

volatile提示线程每次从共享内存中读取变量,面不是从私有内存中读取,保证了同步数据的可见性。

对于volatile修饰的变量,JVM只是保证从主内存加载到线程工作内存的值是最新的。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,486评论 11 349
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 9,154评论 0 11
  • 一、CSS语法CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明。 选择器是需要改变样式的 HTML 元...
    MrSYLong阅读 1,616评论 0 0
  • 这个月周计划、周回顾没有及时跟进,完成度也不是很高,出现了好多计划外的情况,也感觉到自己制定周计划的种种问题,看着...
    月青山阅读 1,531评论 0 0
  • 昨晚下班后,歌兴大发,唱了首《念亲恩》。这是我初去广东打工流行的歌曲,可能大家在外都想念父母的缘故吧。 很纯真的年...
    余海燕阅读 2,880评论 0 0

友情链接更多精彩内容