有了synchronized,还需要volatile做什么事?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

有了synchronized,还需要volatile做什么事?

游客pklijor6gytpx 2019-11-11 14:37:02 1996

有了synchronized,还需要volatile做什么事?

本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。 点击链接欢迎加入感兴趣的技术领域群。

开发者
分享到
取消 提交回答
全部回答(3)
  • masonwang
    2019-12-12 14:34:31

    一方面是因为synchronized是一种锁机制,存在阻塞问题和性能问题,而volatile并不是锁,所以不存在阻塞和性能问题。 另外一方面,因为volatile借助了内存屏障来帮助其解决可见性和有序性问题,而内存屏障的使用还为其带来了一个禁止指令重排的附件功能,所以在有些场景中是可以避免发生指令重排的问题的。

    0 0
  • 1146304169559610
    2019-11-27 12:46:30

    补充1楼,volatile保证了变量在多个线程间的可见性,可以有效避免脏读现象

    0 0
  • 游客pklijor6gytpx
    2019-11-11 14:38:06

    volatile可以禁止指令重排序,在双重校验锁实现单例的时候,虽然使用了synchronized关键字,但是如果不用volatile修饰单例对象,就会存在问题。

    1 0
添加回答
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章
相似问题
推荐课程