admin 管理员组文章数量: 1086019
面试题总结:volatile的功能
文章目录
- 1.volatile到底做了什么:
- 2.synchronized关键字和volatile关键字比较:
1.volatile到底做了什么:
(volatile
保证有序性
,可见性
,不能保证原子性)
- 禁止了指令重排
- 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量值,这个新值对其他线程是立即可见的
- 不保证原子性(线程不安全)
2.synchronized关键字和volatile关键字比较:
- volatile关键字是线程同步的轻量级实现,所以volatile性能肯定比synchronized关键字要好。但是
volatile关键字只能用于变量
而synchronized关键字可以修饰方法以及代码块
。synchronized关键字在JavaSE1.6之后进行了主要包括为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁以及其它各种优化之后执行效率有了显著提升,实际开发中使用 synchronized 关键字的场景还是更多一些。 - 多线程访问volatile关键字不会发生阻塞,而synchronized关键字可能会发生阻塞
volatile关键字
能保证数据的可见性
,但不能保证数据的原子性。synchronized关键字
两者都能保证(synchronized保证三大性,原子性,有序性,可见性
)。volatile关键字
主要用于解决变量在多个线程之间的可见性
,而synchronized关键字
解决的是多个线程之间访问资源的同步性
。
链接:java基础面试题总结链接
本文标签: 面试题总结volatile的功能
版权声明:本文标题:面试题总结:volatile的功能 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1686729678a30224.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论