ReentrantLock Classe
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.
Esclusione reciproca Lock reentrant con lo stesso comportamento di base e semantica del blocco di monitoraggio implicito a cui si accede usando synchronized metodi e istruzioni, ma con funzionalità estese.
[Android.Runtime.Register("java/util/concurrent/locks/ReentrantLock", DoNotGenerateAcw=true)]
public class ReentrantLock : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Util.Concurrent.Locks.ILock
[<Android.Runtime.Register("java/util/concurrent/locks/ReentrantLock", DoNotGenerateAcw=true)>]
type ReentrantLock = class
inherit Object
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface ILock
- Ereditarietà
- Attributi
- Implementazioni
Commenti
Esclusione reciproca Lock reentrant con lo stesso comportamento di base e semantica del blocco di monitoraggio implicito a cui si accede usando synchronized metodi e istruzioni, ma con funzionalità estese.
Un ReentrantLock oggetto è<> di proprietà</em> dal thread per l'ultimo blocco, ma non ancora sbloccandolo. Un thread che richiama lock verrà restituito, acquisendo correttamente il blocco, quando il blocco non è di proprietà di un altro thread. Il metodo restituirà immediatamente se il thread corrente possiede già il blocco. Questa operazione può essere controllata usando i metodi #isHeldByCurrentThread, e #getHoldCount.
Il costruttore per questa classe accetta un parametro facoltativo <>em equità</em>. Quando si imposta true, in contesa, i blocchi favoriscono la concessione dell'accesso al thread in attesa più lungo. In caso contrario, questo blocco non garantisce alcun ordine di accesso specifico. I programmi che usano blocchi equi a cui si accede da molti thread possono visualizzare una velocità effettiva complessiva inferiore (ad esempio, sono più lenti, spesso molto più lenti) rispetto a quelli che usano l'impostazione predefinita, ma hanno varianza più piccole in tempi per ottenere blocchi e garantire la mancanza di fame. Si noti tuttavia che l'equità dei blocchi non garantisce l'equità della pianificazione dei thread. Pertanto, uno dei molti thread che usano un blocco equo può ottenerlo più volte in successione mentre altri thread attivi non stanno avanzando e attualmente non mantengono il blocco. Si noti anche che il metodo non timed #tryLock() non rispetta l'impostazione di equità. Avrà esito positivo se il blocco è disponibile anche se altri thread sono in attesa.
È consigliabile seguire <>immediatamente<> una chiamata a lock con un try blocco, in genere in una costruzione precedente/successiva, ad esempio:
{@code
class X {
private final ReentrantLock lock = new ReentrantLock();
// ...
public void m() {
lock.lock(); // block until condition holds
try {
// ... method body
} finally {
lock.unlock();
}
}
}}
Oltre all'implementazione dell'interfaccia Lock , questa classe definisce una serie di public metodi e protected per controllare lo stato del blocco. Alcuni di questi metodi sono utili solo per la strumentazione e il monitoraggio.
La serializzazione di questa classe si comporta nello stesso modo dei blocchi predefiniti: un blocco deserializzato si trova nello stato sbloccato, indipendentemente dal relativo stato durante la serializzazione.
Questo blocco supporta un massimo di 2147483647 blocchi ricorsivi dallo stesso thread. I tentativi di superare questo limite generano un'eccezione Error dai metodi di blocco.
Aggiunto nella versione 1.5.
per java.util.concurrent.locks.ReentrantLock.
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.
Costruttori
| Nome | Descrizione |
|---|---|
| ReentrantLock() |
Crea un'istanza di |
| ReentrantLock(Boolean) |
Crea un'istanza di |
| ReentrantLock(IntPtr, JniHandleOwnership) |
Costruttore usato durante la creazione di rappresentazioni gestite di oggetti JNI; chiamato dal runtime. |
Proprietà
| Nome | Descrizione |
|---|---|
| Class |
Restituisce la classe di runtime di questo |
| Handle |
Handle per l'istanza di Android sottostante. (Ereditato da Object) |
| HasQueuedThreads |
Esegue una query che indica se i thread sono in attesa di acquisire questo blocco. |
| HoldCount |
Esegue una query sul numero di blocchi per questo blocco dal thread corrente. |
| IsFair |
Restituisce |
| IsHeldByCurrentThread |
Esegue query se questo blocco viene mantenuto dal thread corrente. |
| IsLocked |
Esegue query se questo blocco viene mantenuto da qualsiasi thread. |
| JniIdentityHashCode |
Ottiene il codice hash di identità assegnato a questo Java peer dal runtime di interoperabilità. (Ereditato da Object) |
| JniPeerMembers |
Esclusione reciproca |
| Owner |
Restituisce il thread proprietario di questo blocco o |
| PeerReference |
Ottiene il riferimento all'oggetto JNI per questo peer Java. (Ereditato da Object) |
| QueuedThreads |
Restituisce un insieme contenente thread in attesa di acquisire questo blocco. |
| QueueLength |
Restituisce una stima del numero di thread in attesa di acquisire questo blocco. |
| ThresholdClass |
Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice. |
| ThresholdType |
Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice. |
Metodi
| Nome | Descrizione |
|---|---|
| Clone() |
Crea e restituisce una copia di questo oggetto. (Ereditato da Object) |
| Dispose() |
Rilascia le risorse contenute in questo peer Java. (Ereditato da Object) |
| Dispose(Boolean) |
Rilascia le risorse contenute in questo peer Java. (Ereditato da Object) |
| Equals(Object) |
Indica se un altro oggetto è "uguale a" questo. (Ereditato da Object) |
| GetHashCode() |
Restituisce un valore di codice hash per l'oggetto . (Ereditato da Object) |
| GetWaitingThreads(ICondition) |
Restituisce un insieme contenente i thread che potrebbero essere in attesa della condizione specificata associata a questo blocco. |
| GetWaitQueueLength(ICondition) |
Restituisce una stima del numero di thread in attesa della condizione specificata associata a questo blocco. |
| HasQueuedThread(Thread) |
Esegue una query se il thread specificato è in attesa di acquisire questo blocco. |
| HasWaiters(ICondition) |
Esegue una query che indica se i thread sono in attesa della condizione specificata associata a questo blocco. |
| JavaFinalize() |
Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto . (Ereditato da Object) |
| Lock() |
Acquisisce il blocco. |
| LockInterruptibly() |
Acquisisce il blocco a meno che il thread corrente non sia Thread#interrupt interrotto. |
| NewCondition() |
Restituisce un'istanza |
| Notify() |
Riattiva un singolo thread in attesa del monitor dell'oggetto. (Ereditato da Object) |
| NotifyAll() |
Riattiva tutti i thread in attesa del monitor dell'oggetto. (Ereditato da Object) |
| SetHandle(IntPtr, JniHandleOwnership) |
Imposta la proprietà Handle. (Ereditato da Object) |
| ToArray<T>() |
Crea una matrice gestita da questo wrapper di matrice Java. (Ereditato da Object) |
| ToString() |
Restituisce una rappresentazione di stringa dell'oggetto . (Ereditato da Object) |
| TryLock() |
Acquisisce il blocco solo se non è mantenuto da un altro thread al momento della chiamata. |
| TryLock(Int64, TimeUnit) |
Acquisisce il blocco se non è mantenuto da un altro thread entro il tempo di attesa specificato e il thread corrente non è stato thread#interrupt interrotto. |
| Unlock() |
Tenta di rilasciare questo blocco. |
| UnregisterFromRuntime() |
Annulla la registrazione di questo Java peer dal runtime di interoperabilità. (Ereditato da Object) |
| Wait() |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>. (Ereditato da Object) |
| Wait(Int64, Int32) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale. (Ereditato da Object) |
| Wait(Int64) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| IJavaPeerable.Disposed() |
Notifica al runtime di interoperabilità che il peer gestito è stato eliminato. (Ereditato da Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
Rilascia questo Java peer a meno che non venga conservato da un altro riferimento gestito. (Ereditato da Object) |
| IJavaPeerable.Finalized() |
Notifica al runtime di interoperabilità che il peer gestito è stato finalizzato. (Ereditato da Object) |
| IJavaPeerable.JniManagedPeerState |
Ottiene lo stato che descrive la relazione tra questo peer gestito e il relativo riferimento JNI. (Ereditato da Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Imposta il codice hash dell'identità di interoperabilità per questo Java peer. (Ereditato da Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Imposta lo stato peer gestito e JNI per questo peer Java. (Ereditato da Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Imposta il riferimento all'oggetto JNI usato da questo peer gestito. (Ereditato da Object) |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ottiene il nome JNI del tipo dell'istanza |
| JavaAs<TResult>(IJavaPeerable) |
Provare a digitare |
| JavaCast<TResult>(IJavaObject) |
Esegue una conversione del tipo di tipo controllato dal runtime Android. |
| JavaCast<TResult>(IJavaObject) |
Esclusione reciproca |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Provare a digitare |