tryLock
메서드의 설명서에는 잠금을 얻거나 획득 할 수있는 비 차단 메서드
이 있습니다 (메서드를 호출 할 때 가능하다면).tryLock 메소드 - 비 차단 메소드?
하지만 궁금합니다. 어떻게 동시에 잠금을받을 수 있으며 동시에 보장 할 수 있습니까?
귀하의 방법 (tryLock
)은 차단이 아닙니까?! 잠금 장치를 획득하면 코드가 보호되어야하는 코드 섹션에 액세스하려고 시도하는 사람이
인 것을 의미합니다 (행운이 아닐 경우
). 적어도 특정 시나리오에서는 차단해야합니다. 누구나 로직을 설명 할 수 있습니까?
? 순전히 논리적 인 관점에서 : 나는 확실히이이
모두에서 할 수있는 방법을 이해하지 않습니다 (이 방법은 차단하지 않는다는 것을 보장). 그들은 설정된 tryLock 자체의 코드 내 과정의 또 다른
스레드 ... 잠금을 획득
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Lock.html#tryLock%28%29을
글쎄요, 대부분의 최신 CPU에서 이것은 CAS (Compare And Swap)를 사용하여 이루어졌습니다 – fge
@fge 글쎄요, 그것은 자바에서 어떻게 이루어 집니까? 나는 코드를 살펴 보았으나 아직 이해하지 못했다. 네이티브 메소드를 사용하고 있다고 말하는 겁니까? 나는 그들이 "프리미티브"'wait','notify','notifyAll'만으로 그것을한다고 생각했다. 그러나 그렇다면, 논리적으로 ... 나는 그것이 실제로 어떻게 행해질 수 있는지 정말로 모르겠습니다. –
나는 대부분의 JVM이 그렇다고 의심 할 것이다. (확인되지 않았지만 내 말을 듣지 마라.) 아마도 직접적인 어셈블리 코드는 아니 겠지만, 리눅스에서 퓨 텍스 같은 것을 사용하면 그 효과를 얻을 수 있습니다. – fge