Condividi tramite


ReentrantReadWriteLock.ReentrantWriteLock.TryLock Metodo

Definizione

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.

Documentazione java per java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.tryLock(long, java.util.concurrent.TimeUnit).

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