synchronized是乐观锁还是悲观锁?

看了乐观锁和悲观锁的相关概念(https://zhuanlan.zhihu.com/p/...),里面说synchronized是悲观锁思想的实现,但是里面又说乐观锁的一种实现方式为CAS实现。
synchronized在jdk1.6后不是有锁升级机制嘛,在自旋锁阶段,也是CAS呀,这跟上面的说法不就冲突了嘛。

感觉应该得这样说对不对 :synchronized在自旋锁阶段,为乐观的;在重量级锁阶段,是悲观的。

阅读 6.3k
1 个回答

这个问题嘛,不用太强调它是乐观和悲观。

你说的对,synchronized 有优化,大部分情况下不需要执行互斥了。但从这个轻量级锁这个cas 操作来说,又可以算一个乐观锁的模式。不过要是膨胀到重量级锁之后,确实执行了互斥,叫悲观锁也没毛病。

但纠结这个锁的称呼没什么意义,oracle 文档上都没有说 synchronized 是乐观还是悲观……

就像 java 到底算是解释型语言还是编译型语言呢?连GraalVM 都出来这么多年了,都是AOT 编译了,JAVA 还能叫解释型/编译型/混合型嘛?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题