AbstractQueuedSynchronizer.HasQueuedPredecessors Propriété
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.
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.
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.