Lock 接口比同步方法和同步塊提供了更具擴展性的鎖操做。 spa
他們容許更靈活的結構,能夠具備徹底不一樣的性質,而且能夠支持多個相關類的 線程
條件對象。 對象
它的優點有: 接口
能夠使鎖更公平 隊列
能夠使線程在等待鎖的時候響應中斷 同步
能夠讓線程嘗試獲取鎖,並在沒法獲取鎖的時候當即返回或者等待一段時間 it
能夠在不一樣的範圍,以不一樣的順序獲取和釋放鎖 io
總體上來講 Lock 是 synchronized 的擴展版,Lock 提供了無條件的、可輪詢的 擴展
(tryLock 方法)、定時的(tryLock 帶參方法)、可中斷的(lockInterruptibly)、可多 方法
條件隊列的(newCondition 方法)鎖操做。另外 Lock 的實現類基本都支持非公平
鎖(默認)和公平鎖,synchronized 只支持非公平鎖,固然,在大部分狀況下,非
公平鎖是高效的選擇。