다음을 통해 공유


ReentrantReadWriteLock.ReentrantWriteLock.TryLock 메서드

정의

오버로드

TryLock()

호출 시 다른 스레드가 보유하지 않은 경우에만 쓰기 잠금을 획득합니다.

TryLock(Int64, TimeUnit)

지정된 대기 시간 내에 다른 스레드에 의해 유지되지 않고 현재 스레드가 Thread#인터럽트 중단되지 않은 경우 쓰기 잠금을 획득합니다.

TryLock()

호출 시 다른 스레드가 보유하지 않은 경우에만 쓰기 잠금을 획득합니다.

[Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler")]
public virtual bool TryLock ();
[<Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler")>]
abstract member TryLock : unit -> bool
override this.TryLock : unit -> bool

반환

true 잠금이 해제되어 현재 스레드에서 획득되었거나 쓰기 잠금이 현재 스레드에서 이미 유지되었으면 입니다. 그렇지 false 않으면

구현

특성

설명

호출 시 다른 스레드가 보유하지 않은 경우에만 쓰기 잠금을 획득합니다.

읽기 또는 쓰기 잠금이 다른 스레드에서 유지되지 않는 경우 쓰기 잠금을 획득하고 값 true으로 즉시 반환하여 쓰기 잠금 보류 수를 1로 설정합니다. 이 잠금이 공정한 순서 지정 정책을 사용하도록 설정된 경우에도 다른 스레드가 현재 쓰기 잠금을 tryLock()<<>> 기다리고 있는지 여부에 관계없이 잠금을 사용할 수 있는 경우 해당 호출이 즉시 잠금을 획득합니다. 이 따옴표 barging&따옴표; 동작은 공정성을 깨뜨리더라도 특정 상황에서 유용할 수 있습니다. 이 잠금에 대한 공정성 설정을 적용하려면 거의 동일한 설정을 사용합니다 #tryLock(long, TimeUnit) tryLock(0, TimeUnit.SECONDS) (중단도 감지됨).

현재 스레드가 이미 이 잠금을 보유하는 경우 보류 횟수가 1씩 증가하며 메서드가 반환됩니다 true.

잠금이 다른 스레드에 의해 유지되는 경우 이 메서드는 값 false과 함께 즉시 반환됩니다.

에 대한 java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.tryLock()Java 설명서

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

적용 대상

TryLock(Int64, TimeUnit)

지정된 대기 시간 내에 다른 스레드에 의해 유지되지 않고 현재 스레드가 Thread#인터럽트 중단되지 않은 경우 쓰기 잠금을 획득합니다.

[Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler")]
public virtual bool TryLock (long timeout, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler")>]
abstract member TryLock : int64 * Java.Util.Concurrent.TimeUnit -> bool
override this.TryLock : int64 * Java.Util.Concurrent.TimeUnit -> bool

매개 변수

timeout
Int64

쓰기 잠금을 기다리는 시간

unit
TimeUnit

시간 제한 인수의 시간 단위

반환

true 잠금이 해제되어 현재 스레드에서 획득되었거나 쓰기 잠금이 현재 스레드에서 이미 유지되었으면 입니다. 잠금 false 을 획득하기 전에 대기 시간이 경과한 경우

구현

특성

예외

현재 스레드가 중단된 경우

시간 단위가 null이면

설명

지정된 대기 시간 내에 다른 스레드에 의해 유지되지 않고 현재 스레드가 Thread#인터럽트 중단되지 않은 경우 쓰기 잠금을 획득합니다.

읽기 또는 쓰기 잠금이 다른 스레드에서 유지되지 않는 경우 쓰기 잠금을 획득하고 값 true으로 즉시 반환하여 쓰기 잠금 보류 수를 1로 설정합니다. 이 잠금이 공정한 순서 지정 정책을 사용하도록 설정된 경우 다른 스레드가 쓰기 잠금을 기다리는 경우 사용 가능한 잠금<>을 획득하지 않습니다<>. 이는 메서드와는 대조적입니다 #tryLock() . 공정한 잠금에 대한 막대를 허용하는 시간 초과 tryLock 를 원하는 경우 시간 제한 및 제한되지 않은 양식을 함께 결합합니다.

{@code
            if (lock.tryLock() ||
                lock.tryLock(timeout, unit)) {
              ...
            }}

현재 스레드가 이미 이 잠금을 보유하는 경우 보류 횟수가 1씩 증가하며 메서드가 반환됩니다 true.

다른 스레드에서 잠금을 유지하면 현재 스레드가 스레드 예약을 위해 사용하지 않도록 설정되고 다음 세 가지 중 하나가 발생할 때까지 휴면 상태가 됩니다.

<ul>

<li>현재 스레드에서 쓰기 잠금을 획득하거나

<li>다른 스레드 스레드#인터럽트는 현재 스레드를 중단합니다. 또는

<li>지정된 대기 시간 경과

</ul>

쓰기 잠금을 획득하면 값 true 이 반환되고 쓰기 잠금 보류 수가 1로 설정됩니다.

현재 스레드인 경우:

<ul>

<li>는 이 메서드에 대한 항목에서 중단된 상태를 설정합니다. 또는

<li>는 쓰기 잠금을 획득하는 동안 중단된 Thread#인터럽트입니다.

</ul>

InterruptedException throw되고 현재 스레드의 중단 상태가 지워집니다.

지정된 대기 시간이 경과하면 값 false 이 반환됩니다. 시간이 0보다 작거나 같으면 메서드는 전혀 기다리지 않습니다.

이 구현에서는 이 메서드가 명시적 중단 지점이므로 잠금의 정상 또는 재진입 획득에 대한 인터럽트에 응답하고 대기 시간의 경과를 보고하는 것에 대해 기본 설정이 제공됩니다.

에 대한 java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.tryLock(long, java.util.concurrent.TimeUnit)Java 설명서

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

적용 대상