安全鎖 調(diào)用notify,wait的線程一定會獲得鎖嗎?
調(diào)用notify,wait的線程一定會獲得鎖嗎?wait and notify的性質(zhì)是基于條件對象的,并且只能由已獲取鎖的線程調(diào)用。Java中的每個對象都有一個隱式鎖。隱式鎖與條件對象相關(guān)聯(lián)。當(dāng)線程獲
調(diào)用notify,wait的線程一定會獲得鎖嗎?
wait and notify的性質(zhì)是基于條件對象的,并且只能由已獲取鎖的線程調(diào)用。Java中的每個對象都有一個隱式鎖。隱式鎖與條件對象相關(guān)聯(lián)。當(dāng)線程獲得隱式鎖(例如,進入同步代碼區(qū)域)時,它可以調(diào)用wait。語義是等待condition對象。其他線程可以等待condition對象。在滿足條件之后,它可以調(diào)用notify或no Tifyall來喚醒等待這個條件對象的所有線程。我建議您參考reentrantlock類,它可以反映上面提到的所有內(nèi)容。
newCondition()什么意思?
Newcondition Newcondition()返回綁定到此鎖實例的新條件實例。
在等待條件之前,鎖必須由當(dāng)前線程保持。呼叫條件。等待()將在等待前自動釋放鎖,并在等待返回前重新獲取鎖。實現(xiàn)注意事項條件實例的具體操作取決于鎖的實現(xiàn),鎖的實現(xiàn)必須記錄在案。Return:此鎖實例的新條件實例拋出:Unsupported operationexception-如果鎖實現(xiàn)不支持條件