Sprache

AbstractQueuedSynchronizer.HasQueuedPredecessors Eigenschaft

Definition

Fragt ab, ob Threads warten, um länger als der aktuelle Thread zu erhalten.

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

Eigenschaftswert

true wenn vor dem aktuellen Thread ein in die Warteschlange eingereihter Thread vorhanden ist und false sich der aktuelle Thread am Anfang der Warteschlange befindet oder die Warteschlange leer ist

Attribute

Hinweise

Fragt ab, ob Threads warten, um länger als der aktuelle Thread zu erhalten.

Ein Aufruf dieser Methode entspricht (kann aber effizienter sein als):

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

Beachten Sie, dass aufgrund von Unterbrechungen und Timeouts jederzeit Abbrüche auftreten können, garantiert eine true Rückgabe nicht, dass ein anderer Thread vor dem aktuellen Thread erfasst wird. Ebenso ist es möglich, dass ein anderer Thread ein Rennen zu enqueue gewinnt, nachdem diese Methode zurückgegeben falsewurde, da die Warteschlange leer ist.

Diese Methode soll von einem fairen Synchronizer verwendet werden, um Barging zu vermeiden. Die Methode eines solchen Synchronizers #tryAcquire sollte zurückgeben false, und seine #tryAcquireShared Methode sollte einen negativen Wert zurückgeben, wenn diese Methode zurückgibt true (es sei denn, dies ist ein erneuter Erwerb). Die Methode für einen fairen, erneuten, exklusiven Modus-Synchronizer kann z tryAcquire . B. wie folgt aussehen:

{@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
              }
            }}

In 1.7 hinzugefügt.

Java Dokumentation für java.util.concurrent.locks.AbstractQueuedSynchronizer.hasQueuedPredecessors().

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: