Lock接口比同步方法和同步塊提供了更具擴展性的鎖操作。他們允許更靈活的結構,可以具有完全不同的性質,并且可以支持多個相關類的條件對象。
它的優勢有:
- 可以使鎖更公平;
- 可以使線程在等待鎖的時候響應中斷;
- 可以讓線程嘗試獲取鎖,并在無法獲取鎖的時候立即返回或者等待一段時間;
- 可以在不同的范圍,以不同的順序獲取和釋放鎖。 整體上來說Lock是synchronized的擴展版,Lock提供了無條件的、可輪詢的(tryLock 方法)、定時的(tryLock 帶參方法)、可中斷的(lockInterruptibly)、可多條件隊列的(newCondition 方法)鎖操作。
另外Lock的實現類基本都支持非公平鎖(默認)和公平鎖,synchronized只支持非公平鎖,當然,在大部分情況下,非公平鎖是高效的選擇。