<Java><Multi-thread><Lock interface>
阿新 • • 發佈:2017-06-10
基於 cnblogs 性能 線程 當前 try nbsp 應用場景 unit
Overview
- 介紹java的lock interface.
Motivation
- java擁有像synchronized這樣的內置鎖,那為什麽還需要lock這樣的外置鎖呢?
- 首先,性能不是選擇synchronized或lock的原因,因為jdk6中synchronized的性能已經和lock相差不大。
- 一般,選擇lock是基於lock擁有的以下幾個優點(內置鎖不具備):
- 當獲取鎖時可以有一個等待時間,不會無期限等待下去;
- 當獲取不到鎖時,能夠響應中斷;
- 可以在多讀少寫的應用場景中,提高性能;
- 可以在獲取不到鎖時,立即返回false,獲取到鎖時返回true。
Lock Interface
-
public interface Lock{ void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock(long time, TimeUnit unit) throws InterruptedException; void unlock(); Condition newCondition(); }
- 其中,
- lockInterruptibly()表面加鎖時,當前擁有鎖的線程可以被中斷;
- tryLock()則用於嘗試獲取鎖,能獲取則返回true,否則返回false;
- tryLock(long time, TimeUnit unit)與tryLock類似,只是會嘗試一段時間;
- unlock()用於擁有鎖的線程釋放鎖。
- TBD...
<Java><Multi-thread><Lock interface>