1. 類的定義
static final class NonfairSync extends Sync
複製程式碼
從類的定義中可以看出
- NonfairSync是ReentrantLock中的一個靜態內部類,並且使用final修飾,表示不可繼承
- NonfairSync 繼承了Sync,表明NonfairSync也是AbstractQueuedSynchronizer的子類
2. 欄位屬性
//序列化版本號
private static final long serialVersionUID = -3000897897090466540L;
複製程式碼
3. 方法
lock 方法
//上鎖
final void lock() {
//非公平鎖,直接獲取鎖即可
if (compareAndSetState(0, 1))
//獲取成功把鎖的佔有執行緒設定為當前執行緒
setExclusiveOwnerThread(Thread.currentThread());
else
//直接獲取鎖失敗,呼叫AbstractQueuedSynchronizer的acquire方法
//先嚐試獲取鎖,失敗的話進入等待佇列
acquire(1);
}
複製程式碼
tryAcquire 方法
//嘗試獲取鎖的方法,重寫父類的方法
protected final boolean tryAcquire(int acquires) {
//直接呼叫ReentrantLock的nonfairTryAcquire方法
return nonfairTryAcquire(acquires);
}
複製程式碼