鍍金池/ 問答/Java  Linux/ Java的Lock鎖有同步監(jiān)視器么?

Java的Lock鎖有同步監(jiān)視器么?

今天學習java的時候看到這么一句話“如果使用Lock對象來保證同步,則系統(tǒng)中不存在隱式的同步監(jiān)視器,也就不能使用wait(),notify(),notifyAll()方法進行線程通信了”
存在一些疑惑:

1. Lock實現(xiàn)線程同步有同步監(jiān)視器么?

2. 這句話的意思是不是說只有同步監(jiān)視器(不論顯式或者隱式)才可以調(diào)用wait(),notify(),notifyAll()方法?

回答
編輯回答
悶油瓶
  1. Lock 內(nèi)沒有同步監(jiān)視器 Lock 的實現(xiàn)是基于 AQS(AbstractQueuedSynchronizer)實現(xiàn)的,其實就是一個簡單的類,只是利用了優(yōu)秀的設計來實現(xiàn)了鎖。
  2. wait, notify, notifyAll 調(diào)用的前提都得獲得對象監(jiān)視器,通常用 synchronize 來獲取監(jiān)視器。

可以參考:

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

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

2018年4月5日 00:44
編輯回答
蟲児飛

1.Lock實現(xiàn)線程同步使用CAS和隊列
2.This method should only be called by a thread that is the owner of this object's monitor。
調(diào)用這三個方法,當前線程必須擁有此對象監(jiān)視器。

2017年4月6日 04:02