一、Lock的一般用法
Lock l = ...;
l.lock();
try {
// access the resource protected by this lock
} finally {
l.unlock();
}
二、Lock中的方法
- lock():獲取鎖
- unlock():釋放鎖
- newCondition():返回一個綁定到這個鎖對象實例的一個Condition實例
- tryLock():僅當鎖未被其他線程佔有時才能獲取到並返回true,否則返回false
- lockInterruptibly():獲取鎖並且能在獲取鎖時被打斷
三、ReentrantLock中的屬性
- serialVersionUID:序列號
- sync:內部類Sync的引用,提供了所有方法的實現機制
四、ReentrantLock中的三個內部類
- Sync:抽象類,其中的lock方法需要子類去實現,其兩個子類如下‘
- FairSync
- NonfairSync
五、ReentrantLock中的方法
- ReentrantLock():默認構造方法中將一個NonfairSync對象傳給sync引用
- lock():獲取鎖
- unlock():釋放鎖
- newCondition():獲取Condition對象,用法和Object類中的wait、notify等相同
- tryLock():立即獲取鎖或等待一定時間後放棄