ILock.TryLock Metodo

Definizione

Overload

Nome Descrizione
TryLock()

Acquisisce il blocco solo se è libero al momento della chiamata.

TryLock(Int64, TimeUnit)

Acquisisce il blocco se è libero entro il tempo di attesa specificato e il thread corrente non è stato interrotto thread#interrupt.

TryLock()

Acquisisce il blocco solo se è libero al momento della chiamata.

[Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public bool TryLock();
[<Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member TryLock : unit -> bool

Valori restituiti

true se il blocco è stato acquisito e false in caso contrario

Attributi

Commenti

Acquisisce il blocco solo se è libero al momento della chiamata.

Acquisisce il blocco se è disponibile e restituisce immediatamente con il valore true. Se il blocco non è disponibile, questo metodo restituirà immediatamente con il valore false.

Un linguaggio di utilizzo tipico per questo metodo è:

{@code
            Lock lock = ...;
            if (lock.tryLock()) {
              try {
                // manipulate protected state
              } finally {
                lock.unlock();
              }
            } else {
              // perform alternative actions
            }}

Questo utilizzo garantisce che il blocco venga sbloccato se è stato acquisito e non tenta di sbloccarlo se il blocco non è stato acquisito.

per java.util.concurrent.locks.Lock.tryLock().

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Si applica a

TryLock(Int64, TimeUnit)

Acquisisce il blocco se è libero entro il tempo di attesa specificato e il thread corrente non è stato interrotto thread#interrupt.

[Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public bool TryLock(long time, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member TryLock : int64 * Java.Util.Concurrent.TimeUnit -> bool

Parametri

time
Int64

tempo massimo di attesa per il blocco

unit
TimeUnit

unità temporale dell'argomento time

Valori restituiti

true se il blocco è stato acquisito e false se il tempo di attesa trascorso prima dell'acquisizione del blocco

Attributi

Eccezioni

se il thread corrente viene interrotto durante l'acquisizione del blocco (e l'interruzione dell'acquisizione del blocco è supportata)

Commenti

Acquisisce il blocco se è libero entro il tempo di attesa specificato e il thread corrente non è stato interrotto thread#interrupt.

Se il blocco è disponibile, questo metodo restituisce immediatamente con il valore true. Se il blocco non è disponibile, il thread corrente viene disabilitato per scopi di pianificazione dei thread e rimane inattivo fino a quando non si verifica una delle tre cose seguenti: ul<li Il blocco viene acquisito dal thread corrente; o >li<Altri thread Thread#interrupt interrompe il thread corrente e l'interruzione dell'acquisizione del blocco è supportata; oppure >il<tempo di attesa specificato è trascorso >/ul<><>

Se il blocco viene acquisito, viene restituito il valore true .

Se il thread corrente: <ul><li>ha lo stato interrotto impostato sulla voce di questo metodo; o <li>è Thread#interrupt interrotto durante l'acquisizione del blocco e l'interruzione dell'acquisizione del blocco è supportata, </ul> viene InterruptedException generato 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.

<b>Considerazioni sull'implementazione</b>

La possibilità di interrompere un'acquisizione di blocco in alcune implementazioni potrebbe non essere possibile e, se possibile, potrebbe essere un'operazione costosa. Il programmatore deve tenere presente che questo può essere il caso. Un'implementazione deve documentare quando si tratta del caso.

Un'implementazione può favorire la risposta a un interrupt rispetto alla normale restituzione del metodo o la segnalazione di un timeout.

Un'implementazione Lock può essere in grado di rilevare un uso errato del blocco, ad esempio una chiamata che causerebbe deadlock e potrebbe generare un'eccezione (deselezionata) in tali circostanze. Le circostanze e il tipo di eccezione devono essere documentati da tale Lock implementazione.

per java.util.concurrent.locks.Lock.tryLock(long, java.util.concurrent.TimeUnit).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Si applica a