ReentrantLock Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Exclusion mutuelle Lock réentrante avec le même comportement et sémantique de base que le verrou de surveillance implicite accessible à l’aide synchronized de méthodes et d’instructions, mais avec des fonctionnalités étendues.
[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
- Héritage
- Attributs
- Implémente
Remarques
Exclusion mutuelle Lock réentrante avec le même comportement et sémantique de base que le verrou de surveillance implicite accessible à l’aide synchronized de méthodes et d’instructions, mais avec des fonctionnalités étendues.
A ReentrantLock est <em>owned</em> by the thread last successfully locking, but not yet unlocking it. Un appel de thread lock retourne, avec succès l’acquisition du verrou, lorsque le verrou n’appartient pas à un autre thread. La méthode retourne immédiatement si le thread actuel possède déjà le verrou. Cela peut être vérifié à l’aide de méthodes #isHeldByCurrentThreadet #getHoldCount.
Le constructeur de cette classe accepte un <paramètre facultatif em>fairness</em> . Lorsque vous définissez true, sous contention, les verrous favorisent l’octroi de l’accès au thread en attente le plus long. Sinon, ce verrou ne garantit aucune commande d’accès particulière. Les programmes utilisant des verrous équitables accessibles par de nombreux threads peuvent afficher un débit global inférieur (c’est-à-dire, sont plus lents ; souvent beaucoup plus lents) que ceux qui utilisent le paramètre par défaut, mais ont des écarts plus petits dans les temps pour obtenir des verrous et garantir l’absence de faim. Notez toutefois que l’équité des verrous ne garantit pas l’équité de la planification des threads. Par conséquent, l’un des nombreux threads utilisant un verrou équitable peut l’obtenir plusieurs fois par succession, tandis que d’autres threads actifs ne progressent pas et ne tiennent pas actuellement le verrou. Notez également que la méthode non planifiée #tryLock() ne respecte pas le paramètre d’équité. Elle réussit si le verrou est disponible même si d’autres threads attendent.
Il est recommandé de <>suivre immédiatement un appel à lock em always</em> avec un try bloc, généralement dans un avant/après la construction, comme :
{@code
class X {
private final ReentrantLock lock = new ReentrantLock();
// ...
public void m() {
lock.lock(); // block until condition holds
try {
// ... method body
} finally {
lock.unlock();
}
}
}}
Outre l’implémentation de l’interface Lock , cette classe définit un certain nombre de public méthodes pour protected inspecter l’état du verrou. Certaines de ces méthodes sont uniquement utiles pour l’instrumentation et la surveillance.
La sérialisation de cette classe se comporte de la même façon que les verrous intégrés : un verrou désérialisé est dans l’état déverrouillé, quel que soit son état lors de la sérialisation.
Ce verrou prend en charge un maximum de 2147483647 verrous récursifs par le même thread. Les tentatives de dépassement de cette limite entraînent Error des levées de méthodes de verrouillage.
Ajouté à la version 1.5.
Java documentation pour java.util.concurrent.locks.ReentrantLock.
Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.
Constructeurs
| Nom | Description |
|---|---|
| ReentrantLock() |
Crée une instance de |
| ReentrantLock(Boolean) |
Crée une instance avec la stratégie d’équité |
| ReentrantLock(IntPtr, JniHandleOwnership) |
Constructeur utilisé lors de la création de représentations managées d’objets JNI ; appelée par le runtime. |
Propriétés
| Nom | Description |
|---|---|
| Class |
Retourne la classe runtime de ce |
| Handle |
Handle de l’instance Android sous-jacente. (Hérité de Object) |
| HasQueuedThreads |
Interroge si des threads attendent d’acquérir ce verrou. |
| HoldCount |
Interroge le nombre de conservations sur ce verrou par le thread actuel. |
| IsFair |
Retourne |
| IsHeldByCurrentThread |
Interroge si ce verrou est conservé par le thread actuel. |
| IsLocked |
Interroge si ce verrou est conservé par n’importe quel thread. |
| JniIdentityHashCode |
Exclusion mutuelle |
| JniPeerMembers |
Exclusion mutuelle |
| Owner |
Retourne le thread qui possède actuellement ce verrou, ou |
| PeerReference |
Exclusion mutuelle |
| QueuedThreads |
Retourne une collection contenant des threads qui peuvent attendre d’acquérir ce verrou. |
| QueueLength |
Retourne une estimation du nombre de threads en attente d’acquisition de ce verrou. |
| ThresholdClass |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. |
| ThresholdType |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. |
Méthodes
| Nom | Description |
|---|---|
| Clone() |
Crée et retourne une copie de cet objet. (Hérité de Object) |
| Dispose() |
Exclusion mutuelle |
| Dispose(Boolean) |
Exclusion mutuelle |
| Equals(Object) |
Indique si un autre objet est « égal à » celui-ci. (Hérité de Object) |
| GetHashCode() |
Retourne une valeur de code de hachage pour l'objet. (Hérité de Object) |
| GetWaitingThreads(ICondition) |
Retourne une collection contenant ces threads qui peuvent être en attente sur la condition donnée associée à ce verrou. |
| GetWaitQueueLength(ICondition) |
Retourne une estimation du nombre de threads en attente sur la condition donnée associée à ce verrou. |
| HasQueuedThread(Thread) |
Interroge si le thread donné attend d’acquérir ce verrou. |
| HasWaiters(ICondition) |
Interroge si les threads attendent la condition donnée associée à ce verrou. |
| JavaFinalize() |
Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet. (Hérité de Object) |
| Lock() |
Acquiert le verrou. |
| LockInterruptibly() |
Acquiert le verrou, sauf si le thread actuel est interrompu par thread#interruption. |
| NewCondition() |
Retourne une |
| Notify() |
Réveille un thread unique qui attend le moniteur de cet objet. (Hérité de Object) |
| NotifyAll() |
Réveille tous les threads qui attendent le moniteur de cet objet. (Hérité de Object) |
| SetHandle(IntPtr, JniHandleOwnership) |
Définit la propriété Handle. (Hérité de Object) |
| ToArray<T>() |
Exclusion mutuelle |
| ToString() |
Retourne une représentation de chaîne de l'objet. (Hérité de Object) |
| TryLock() |
Acquiert le verrou uniquement s’il n’est pas détenu par un autre thread au moment de l’appel. |
| TryLock(Int64, TimeUnit) |
Acquiert le verrou s’il n’est pas conservé par un autre thread dans le délai d’attente donné et que le thread actuel n’a pas été interrompu par thread#interruption. |
| Unlock() |
Tente de libérer ce verrou. |
| UnregisterFromRuntime() |
Exclusion mutuelle |
| Wait() |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<> (Hérité de Object) |
| Wait(Int64, Int32) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
| Wait(Int64) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
Implémentations d’interfaces explicites
| Nom | Description |
|---|---|
| IJavaPeerable.Disposed() |
Exclusion mutuelle |
| IJavaPeerable.DisposeUnlessReferenced() |
Exclusion mutuelle |
| IJavaPeerable.Finalized() |
Exclusion mutuelle |
| IJavaPeerable.JniManagedPeerState |
Exclusion mutuelle |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Exclusion mutuelle |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Exclusion mutuelle |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Exclusion mutuelle |
Méthodes d’extension
| Nom | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtient le nom JNI du type de l’instance |
| JavaAs<TResult>(IJavaPeerable) |
Essayez de forcer |
| JavaCast<TResult>(IJavaObject) |
Effectue une conversion de type vérifiée par le runtime Android. |
| JavaCast<TResult>(IJavaObject) |
Exclusion mutuelle |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Essayez de forcer |