Langage

AbstractQueuedSynchronizer.HasQueuedPredecessors Propriété

Définition

Interroge si des threads attendent d’acquérir plus longtemps que le thread actuel.

public bool HasQueuedPredecessors { [Android.Runtime.Register("hasQueuedPredecessors", "()Z", "")] get; }
[<get: Android.Runtime.Register("hasQueuedPredecessors", "()Z", "")>]
member this.HasQueuedPredecessors : bool

Valeur de propriété

true s’il existe un thread mis en file d’attente précédant le thread actif et false si le thread actuel se trouve à la tête de la file d’attente ou si la file d’attente est vide

Attributs

Remarques

Interroge si des threads attendent d’acquérir plus longtemps que le thread actuel.

Un appel de cette méthode équivaut à (mais peut être plus efficace que) :

{@code
            getFirstQueuedThread() != Thread.currentThread()
              && hasQueuedThreads()}

Notez que, étant donné que les annulations en raison d’interruptions et de délais d’expiration peuvent se produire à tout moment, un true retour ne garantit pas que certains autres threads seront acquis avant le thread actuel. De même, il est possible qu’un autre thread gagne une course en file d’attente après que cette méthode a retourné false, en raison de la file d’attente étant vide.

Cette méthode est conçue pour être utilisée par un synchronisateur équitable pour éviter la barrage. Cette méthode de synchronisateur doit retourner #tryAcquireet sa false méthode doit retourner une valeur négative, si cette méthode retourne #tryAcquireShared (sauf s’il s’agit true d’une acquisition réentrante). Par exemple, la tryAcquire méthode d’un synchronisateur de mode équitable, reentrant, exclusif peut ressembler à ceci :

{@code
            protected boolean tryAcquire(int arg) {
              if (isHeldExclusively()) {
                // A reentrant acquire; increment hold count
                return true;
              } else if (hasQueuedPredecessors()) {
                return false;
              } else {
                // try to acquire normally
              }
            }}

Ajouté dans la version 1.7.

Java documentation pour java.util.concurrent.locks.AbstractQueuedSynchronizer.hasQueuedPredecessors().

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.

S’applique à