AbstractQueuedSynchronizer.HasQueuedPredecessors Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Consulta si algún subproceso ha estado esperando adquirir más tiempo que el subproceso actual.
public bool HasQueuedPredecessors { [Android.Runtime.Register("hasQueuedPredecessors", "()Z", "")] get; }
[<get: Android.Runtime.Register("hasQueuedPredecessors", "()Z", "")>]
member this.HasQueuedPredecessors : bool
Valor de propiedad
true si hay un subproceso en cola que precede al subproceso actual y false si el subproceso actual está al principio de la cola o la cola está vacía.
- Atributos
Comentarios
Consulta si algún subproceso ha estado esperando adquirir más tiempo que el subproceso actual.
Una invocación de este método es equivalente a (pero puede ser más eficaz que):
{@code
getFirstQueuedThread() != Thread.currentThread()
&& hasQueuedThreads()}
Tenga en cuenta que, dado que las cancelaciones debidas a interrupciones y tiempos de espera pueden producirse en cualquier momento, una true devolución no garantiza que algún otro subproceso se adquiera antes del subproceso actual. Del mismo modo, es posible que otro subproceso gane una carrera para poner en cola después de que este método haya devuelto false, debido a que la cola está vacía.
Este método está diseñado para ser utilizado por un sincronizador justo para evitar la bargación. Este método de #tryAcquire sincronizador debe devolver falsey su #tryAcquireShared método debe devolver un valor negativo, si este método devuelve true (a menos que sea una adquisición reentrante). Por ejemplo, el tryAcquire método para un sincronizador de modo exclusivo, justo y reentrante podría tener este aspecto:
{@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
}
}}
Agregado en la versión 1.7.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.