ReentrantReadWriteLock.ReentrantWriteLock.TryLock Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.
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.