ReentrantReadWriteLock.ReentrantWriteLock.TryLock Método

Definição

Sobrecargas

Nome Description
TryLock()

Adquire o bloqueio de gravação somente se ele não for mantido por outro thread no momento da invocação.

TryLock(Int64, TimeUnit)

Adquire o bloqueio de gravação se ele não for mantido por outro thread dentro do tempo de espera determinado e o thread atual não tiver sido interrompido por thread#interrupt.

TryLock()

Adquire o bloqueio de gravação somente se ele não for mantido por outro thread no momento da invocação.

[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

Retornos

true se o bloqueio foi gratuito e foi adquirido pelo thread atual ou se o bloqueio de gravação já foi mantido pelo thread atual; e false de outra forma.

Implementações

Atributos

Comentários

Adquire o bloqueio de gravação somente se ele não for mantido por outro thread no momento da invocação.

Adquire o bloqueio de gravação se o bloqueio de leitura ou gravação não for mantido por outro thread e retornar imediatamente com o valor true, definindo a contagem de retenção de bloqueio de gravação como um. Mesmo quando esse bloqueio tiver sido definido para usar uma política de ordenação justa, uma chamada para tryLock()<eles>> adquirirá< imediatamente o bloqueio se ele estiver disponível, se outros threads estão aguardando ou não o bloqueio de gravação no momento. Este > barging" o comportamento pode ser útil em determinadas circunstâncias, mesmo que isso interrompa a imparcialidade. Se você quiser respeitar a configuração de imparcialidade desse bloqueio, use #tryLock(long, TimeUnit) tryLock(0, TimeUnit.SECONDS) o que é quase equivalente (ele também detecta interrupção).

Se o thread atual já mantiver esse bloqueio, a contagem de retenção será incrementada por um e o método retornará true.

Se o bloqueio for mantido por outro thread, esse método retornará imediatamente com o valor false.

Java documentação para java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.tryLock().

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Aplica-se a

TryLock(Int64, TimeUnit)

Adquire o bloqueio de gravação se ele não for mantido por outro thread dentro do tempo de espera determinado e o thread atual não tiver sido interrompido por thread#interrupt.

[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

Parâmetros

timeout
Int64

o tempo para aguardar o bloqueio de gravação

unit
TimeUnit

a unidade de tempo limite do argumento de tempo limite

Retornos

true se o bloqueio foi gratuito e foi adquirido pelo thread atual ou se o bloqueio de gravação já foi mantido pelo thread atual; e false se o tempo de espera tiver decorrido antes que o bloqueio pudesse ser adquirido.

Implementações

Atributos

Exceções

se o thread atual for interrompido

se a unidade de tempo for nula

Comentários

Adquire o bloqueio de gravação se ele não for mantido por outro thread dentro do tempo de espera determinado e o thread atual não tiver sido interrompido por thread#interrupt.

Adquire o bloqueio de gravação se o bloqueio de leitura ou gravação não for mantido por outro thread e retornar imediatamente com o valor true, definindo a contagem de retenção de bloqueio de gravação como um. Se esse bloqueio tiver sido definido para usar uma política de ordenação justa, um bloqueio <disponível não>< será adquirido se outros threads estiverem> aguardando o bloqueio de gravação. Isso contrasta com o #tryLock() método. Se você quiser um horário tryLock que permita a barras em um bloqueio justo, combine os formulários cronometrados e não cronometrados:

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

Se o thread atual já mantiver esse bloqueio, a contagem de retenção será incrementada por um e o método retornará true.

Se o bloqueio for mantido por outro thread, o thread atual ficará desabilitado para fins de agendamento de thread e ficará inativo até que uma das três coisas aconteça:

<ul>

<li>O bloqueio de gravação é adquirido pelo thread atual; ou

<li>Algum outro thread#interrupt interrompe o thread atual; ou

<li>O tempo de espera especificado decorrido

</ul>

Se o bloqueio de gravação for adquirido, o valor true será retornado e a contagem de bloqueio de gravação será definida como um.

Se o thread atual:

<ul>

<li>tem seu status interrompido definido na entrada para este método; ou

<li>é Thread#interrupt interrompido durante a aquisição do bloqueio de gravação,

</ul>

em seguida, InterruptedException é gerado e o status interrompido do thread atual é limpo.

Se o tempo de espera especificado estiver decorrido, o valor false será retornado. Se o tempo for menor ou igual a zero, o método não aguardará nada.

Nessa implementação, como esse método é um ponto de interrupção explícito, a preferência é dada para responder à interrupção sobre a aquisição normal ou reentrante do bloqueio e relatar a decorrido do tempo de espera.

Java documentação para java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.tryLock(long, java.util.concurrent.TimeUnit).

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Aplica-se a