Java的Lock锁有同步监视器么?

发布于 2022-09-06 20:13:22 字数 220 浏览 19 评论 0

今天学习java的时候看到这么一句话“如果使用Lock对象来保证同步,则系统中不存在隐式的同步监视器,也就不能使用wait(),notify(),notifyAll()方法进行线程通信了”
存在一些疑惑:

1. Lock实现线程同步有同步监视器么?

2. 这句话的意思是不是说只有同步监视器(不论显式或者隐式)才可以调用wait(),notify(),notifyAll()方法?

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

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

发布评论

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

评论(2

甚是思念 2022-09-13 20:13:22
  1. Lock 内没有同步监视器 Lock 的实现是基于 AQS(AbstractQueuedSynchronizer)实现的,其实就是一个简单的类,只是利用了优秀的设计来实现了锁。
  2. wait, notify, notifyAll 调用的前提都得获得对象监视器,通常用 synchronize 来获取监视器。

可以参考:

https://crossoverjie.top/2018...

https://crossoverjie.top/2018...

有木有妳兜一样 2022-09-13 20:13:22

1.Lock实现线程同步使用CAS和队列
2.This method should only be called by a thread that is the owner of this object's monitor。
调用这三个方法,当前线程必须拥有此对象监视器。

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