开发者社区> 问答> 正文

volatile能代替锁么?

volatile能代替锁么?

展开
收起
真的很搞笑 2021-10-31 17:24:32 773 0
1 条回答
写回答
取消 提交回答
  • 不能代替锁,Volatile利用内存栅栏机制来保持变量的一致性。不能代替锁,其只具备数据可见性一致性,不具备原子性。

    volatile不需要加锁,比synchronized更轻便,不会阻塞线程

    synchronized既能保证可见性,又能保证原子性,而volatile只能保证可见性,无法保证原子性

    与锁相比,Volatile 变量是一种非常简单但同时又非常脆弱的同步机制,它在某些情况下将提供优于锁的性能和伸缩性。如果严格遵循 volatile 的使用条件(变量真正独立于其他变量和自己以前的值 ) 在某些情况下可以使用 volatile 代替 synchronized 来优化代码提升效率。

    2021-10-31 17:27:03
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
原子变量与内存模型 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载