AbstractQueuedSynchronizer.HasQueuedPredecessors Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.
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.