synchronized是乐观锁还是悲观锁?

发布于 2022-09-13 00:24:33 字数 290 浏览 15 评论 0

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情话难免假 2022-09-20 00:24:33

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

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

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文