synchronized是乐观锁还是悲观锁?
看了乐观锁和悲观锁的相关概念(https://zhuanlan.zhihu.com/p/...),里面说synchronized是悲观锁思想的实现,但是里面又说乐观锁的一种实现方式为CAS实现。
synchronized在jdk1.6后不是有锁升级机制嘛,在自旋锁阶段,也是CAS呀,这跟上面的说法不就冲突了嘛。
感觉应该得这样说对不对 :synchronized在自旋锁阶段,为乐观的;在重量级锁阶段,是悲观的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这个问题嘛,不用太强调它是乐观和悲观。
你说的对,
synchronized
有优化,大部分情况下不需要执行互斥了。但从这个轻量级锁这个cas 操作来说,又可以算一个乐观锁的模式。不过要是膨胀到重量级锁之后,确实执行了互斥,叫悲观锁也没毛病。但纠结这个锁的称呼没什么意义,oracle 文档上都没有说
synchronized
是乐观还是悲观……就像 java 到底算是解释型语言还是编译型语言呢?连GraalVM 都出来这么多年了,都是AOT 编译了,JAVA 还能叫解释型/编译型/混合型嘛?