Compartilhar via


ReentrantReadWriteLock.ReentrantWriteLock.TryLock Método

Definição

Sobrecargas

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 estava livre e foi adquirido pelo thread atual, ou o bloqueio de gravação já estava mantido pelo thread atual; e false outros.

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 nem o bloqueio de leitura nem o bloqueio de gravação forem mantidos por outro thread e retorna imediatamente com o valor true, definindo a contagem 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()<em>adquirirá<> imediatamente o bloqueio se ele estiver disponível, independentemente de outros threads estarem ou não aguardando o bloqueio de gravação. Isso " barbear" O comportamento pode ser útil em certas circunstâncias, mesmo que quebre a equidade. Se você quiser honrar a configuração de justiça para este bloqueio, então 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 em um e o método retornará true.

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

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

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

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 do argumento Timeout

Retornos

true se o bloqueio estava livre e foi adquirido pelo thread atual, ou o bloqueio de gravação já estava mantido pelo thread atual; e false se o tempo de espera decorreu para que o bloqueio pudesse ser adquirido.

Implementações

Atributos

Exceções

se o thread atual for interrompido

se a unidade de tempo for null

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 nem o bloqueio de leitura nem o bloqueio de gravação forem mantidos por outro thread e retorna imediatamente com o valor true, definindo a contagem 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 quaisquer outros threads estiverem aguardando o bloqueio de gravação. Isso contrasta com o #tryLock() método. Se você quiser um cronometrado tryLock que permita o bloqueio justo, combine os formulários cronometrados e não cronometrados juntos:

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

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

Se o bloqueio for mantido por outro thread, o thread atual será 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;

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

<li>O tempo de espera especificado decorre

</ul>

Se o bloqueio de gravação for adquirido, o valor true será retornado e a contagem de retenção 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;

<li>é Thread#interrupt interrompido ao adquirir o bloqueio de gravação,

</ul>

em seguida, InterruptedException é lançado e o status interrompido do thread atual é limpo.

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

Nesta implementação, como este método é um ponto de interrupção explícito, é dada preferência à resposta à interrupção em relação à aquisição normal ou reentrante do bloqueio, e ao excesso de relato do tempo de espera.

Documentação Java 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 Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.

Aplica-se a