AbstractQueuedSynchronizer가 Acquring Lock에서 방해하는 이유는 무엇입니까?
-
03-07-2019 - |
문제
java.uti.concurrent.locks.abtractqueuedsynchronizer의 소스 코드를보고 있었고 arceire () 메소드는 다음과 같습니다.
public final void acquire(int arg) {
if (!tryAcquire(arg) &&
acquireQueued(addWaiter(Node.EXCLUSIVE), arg))
Thread.currentThread().interrupt();
}
acquire ()를 호출하는 스레드를 방해하는 이유는 무엇입니까? 스레드 런 () 메소드에 어딘가에 점검이 있으면 arce ()를 호출 한 후에는 바람직하지 않고 생각하지 않을 것입니다.
누구든지 위의 코드가 왜 이렇게하는지 밝히는 사람이 있습니까?
해결책
Javadoc을 읽는 경우 acquiredQueued
, 당신은 대기 중에 실이 중단되면 true가 반환된다는 것을 알게 될 것입니다. 따라서, 전화 selfInterrupt
(OpenJDK 소스 코드에서 호출 된대로)는 통화 스레드로의 인터럽트를 전파하는 것입니다.
제휴하지 않습니다 StackOverflow