2012-04-27 3 views
0

ReentrantLock 용 Java API를 살펴본 결과 synchronized 키워드와 동기화가 사용되지 않는다는 것을 알 수 있습니다. 객체를 동기화하는 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

당신은 올바른 위치 : 오라클의 JDK에, ReentrantLock가 아닌 synchronized 키워드의 관점에서 원시 네이티브 compare-and-swap (및 그 위에 자바 코드의 공정한 금액)의 관점에서 구현됩니다.