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

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

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

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

阅读 3.4k
2 个回答
  1. Lock 内没有同步监视器 Lock 的实现是基于 AQS(AbstractQueuedSynchronizer)实现的,其实就是一个简单的类,只是利用了优秀的设计来实现了锁。
  2. wait, notify, notifyAll 调用的前提都得获得对象监视器,通常用 synchronize 来获取监视器。

可以参考:

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

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

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

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