2012-04-27 86 views
0

我已經查看了ReentrantLock的Java API,我可以看到的是​​關鍵字沒有使用同步。它是否在AbstractQueuedSynchronizer中的下面的方法中(ReentrantLock是指在嘗試獲取鎖時引用)來同步對象?由於compareAndSwapInt是本地方法,因此在本機級別/代碼中進行了同步嗎?ReentrantLock如何同步?

protected final boolean compareAndSetState(int expect, int update) { 
    // See below for intrinsics setup to support this 
    return unsafe.compareAndSwapInt(this, stateOffset, expect, update); 
} 

回答

1

你是正確的:在Oracle的JDK,ReentrantLock在本地compare-and-swap原語(加在它上面相當數量的Java代碼)來實現,而不是在​​關鍵字的條款。