ReentrantReadWriteLock.ReentrantWriteLock.TryLock Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Overload
TryLock() |
Acquisisce il blocco di scrittura solo se non è mantenuto da un altro thread al momento della chiamata. |
TryLock(Int64, TimeUnit) |
Acquisisce il blocco di scrittura se non è mantenuto da un altro thread entro il tempo di attesa specificato e il thread corrente non è stato interrotto da Thread#interrupt. |
TryLock()
Acquisisce il blocco di scrittura solo se non è mantenuto da un altro thread al momento della chiamata.
[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
Restituisce
true
se il blocco era libero ed è stato acquisito dal thread corrente o il blocco di scrittura era già mantenuto dal thread corrente; e false
in caso contrario.
Implementazioni
- Attributi
Commenti
Acquisisce il blocco di scrittura solo se non è mantenuto da un altro thread al momento della chiamata.
Acquisisce il blocco di scrittura se né il blocco di lettura né scrittura vengono mantenuti da un altro thread e restituisce immediatamente con il valore true
, impostando il numero di blocchi di scrittura su uno. Anche quando questo blocco è stato impostato per usare un criterio di ordinamento equo, una chiamata a tryLock()
<em will</em>> acquisisce immediatamente il blocco, se disponibile, indipendentemente dal fatto che altri thread siano in attesa del blocco di scrittura. Questo " barging" il comportamento può essere utile in determinate circostanze, anche se interrompe l'equità. Se si vuole rispettare l'impostazione di equità per questo blocco, usare #tryLock(long, TimeUnit) tryLock(0, TimeUnit.SECONDS)
che è quasi equivalente (rileva anche l'interruzione).
Se il thread corrente contiene già questo blocco, il conteggio dei blocchi viene incrementato di uno e il metodo restituisce true
.
Se il blocco viene mantenuto da un altro thread, questo metodo restituirà immediatamente con il valore false
.
Documentazione java per java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.tryLock()
.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.
Si applica a
TryLock(Int64, TimeUnit)
Acquisisce il blocco di scrittura se non è mantenuto da un altro thread entro il tempo di attesa specificato e il thread corrente non è stato interrotto da 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
Parametri
- timeout
- Int64
tempo di attesa del blocco di scrittura
- unit
- TimeUnit
unità temporale dell'argomento timeout
Restituisce
true
se il blocco era libero ed è stato acquisito dal thread corrente o il blocco di scrittura era già mantenuto dal thread corrente; e false
se il tempo di attesa trascorso prima che il blocco possa essere acquisito.
Implementazioni
- Attributi
Eccezioni
se il thread corrente viene interrotto
se l'unità temporale è Null
Commenti
Acquisisce il blocco di scrittura se non è mantenuto da un altro thread entro il tempo di attesa specificato e il thread corrente non è stato interrotto da Thread#interrupt.
Acquisisce il blocco di scrittura se né il blocco di lettura né scrittura vengono mantenuti da un altro thread e restituisce immediatamente con il valore true
, impostando il numero di blocchi di scrittura su uno. Se questo blocco è stato impostato per l'uso di un criterio di ordinamento equo, un lock <em>disponibile non>< verrà acquisito se altri thread sono in attesa del blocco di scrittura. Questo è in contrasto con il #tryLock()
metodo . Se si desidera un timed tryLock
che consenta di bargarsi su un blocco equo, combinare i moduli timed e un-timed insieme:
{@code
if (lock.tryLock() ||
lock.tryLock(timeout, unit)) {
...
}}
Se il thread corrente contiene già questo blocco, il conteggio dei blocchi viene incrementato di uno e il metodo restituisce true
.
Se il blocco viene mantenuto da un altro thread, il thread corrente diventa disabilitato per scopi di pianificazione dei thread e giace inattivo fino a quando non si verifica una delle tre cose seguenti:
<ul>
<li>Il blocco di scrittura viene acquisito dal thread corrente; o
<li>Altri thread Thread#interrupt interrompe il thread corrente; o
<li>Il tempo di attesa specificato è trascorso
</ul>
Se il blocco di scrittura viene acquisito, viene restituito il valore true
e il conteggio dei blocchi di scrittura viene impostato su uno.
Se il thread corrente:
<ul>
<li>ha il suo stato interrotto impostato sulla voce di questo metodo; o
<li>è Thread#interrupt interrotto durante l'acquisizione del blocco di scrittura,
</ul>
viene quindi InterruptedException
generata e lo stato interrotto del thread corrente viene cancellato.
Se il tempo di attesa specificato è trascorso, viene restituito il valore false
. Se l'ora è minore o uguale a zero, il metodo non attenderà affatto.
In questa implementazione, poiché questo metodo è un punto di interruzione esplicito, viene assegnata la preferenza a rispondere all'interrupt rispetto all'acquisizione normale o reentrant del blocco e oltre a segnalare la scadenza del tempo di attesa.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.