前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >volatile 关键字

volatile 关键字

作者头像
happyJared
发布2019-07-08 16:47:27
3300
发布2019-07-08 16:47:27
举报
文章被收录于专栏:happyJaredhappyJared

volatile 关键字的作用:就是保证变量的可见性,防止指令重排序

在 JDK1.2 之前,Java 的内存模型实现总是从主存读取变量,是不需要进行特别注意的;而在当前的 Java 内存模型下,线程通常是把变量先保存本地内存中,而不是直接在主存中进行读写,这就可能造成一个线程在主存中修改了变量的值,而另外一个线程还继续使用着在寄存器中的变量值副本,造成数据的不一致

数据不一致

解决这个问题,就需要把变量用volatile进行声明,表明这个变量是不稳定的,每次使用都需要到主存中进行读取。

volatile关键字的可见性

synchronized 关键字和 volatile 关键字对比:

  1. volatile 关键字是线程同步的轻量级实现,所以 volatile 性能肯定要比 synchronized 关键字好**;
  2. volatile 关键字只能修饰变量,而 synchronized 关键字可以修饰方法以及代码块;
  3. 多线程访问 volatile 关键字不会发生阻塞,而 synchronized 关键字可能会发生阻塞;
  4. volatile 关键字是保证数据的可见性,但不保证数据的原子性,而 synchronized 关键字两者都能保证;
  5. volatile 关键字解决的是变量在多个线程之间的可见性,而 synchronized 关键字解决的是多个线程间访问资源的同步性。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.07.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档