2014-05-19 62 views
0

簡而言之,我的問題是,在java中使用Lock和Condition代替synchronized關鍵字有什麼好處,Lock似乎對我更容易出錯。鎖定和條件與同步

+0

你能否擴展你爲什麼這麼想? – awksp

+0

我已經看過那個實際上,但無法找到它的鎖定和條件的具體優勢。 – KKGanguly

+0

'ReadWriteReerantrantLocks'可以做'synchronized'塊無法做到的事情。就像編程中的其他一切一樣,每件事都有合適的時間 – awksp

回答

0

鎖VS同步
1.鎖提供了更多的知名度和鎖定,不像同步其中線程可能最終爲鎖定無限期等待,我們可以使用的tryLock()來使特定的時間肯定線程等待選項只要。
2.同步代碼更簡潔和易於維護,而使用Lock時,即使在lock()和unlock()方法調用之間引發一些異常,我們也不得不使用try-finally塊來確保Lock被釋放。
3.同步塊或方法只能覆蓋一種方法,而我們可以通過一種方法獲取鎖,並通過Lock API在另一種方法中釋放它。
4.同步關鍵字不提供公平性,而我們可以在創建ReentrantLock對象時將公平性設置爲true,以便最長的等待線程首先獲得鎖定。
5.我們可以爲Lock創建不同的條件,不同的線程可以等待()不同的條件。

here。對我來說,使用Lock最重要的原因是3和4.