AbstractQueuedSynchronizer.HasQueuedPredecessors Propriedade

Definição

Consulta se algum thread está aguardando para adquirir mais tempo do que o thread atual.

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

Valor da propriedade

true se houver um thread enfileirado antes do thread atual e false se o thread atual estiver na cabeça da fila ou se a fila estiver vazia

Atributos

Comentários

Consulta se algum thread está aguardando para adquirir mais tempo do que o thread atual.

Uma invocação desse método é equivalente a (mas pode ser mais eficiente do que):

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

Observe que, como cancelamentos devido a interrupções e tempos limite podem ocorrer a qualquer momento, um true retorno não garante que algum outro thread será adquirido antes do thread atual. Da mesma forma, é possível que outro thread ganhe uma corrida para enfileirar depois que esse método tiver retornado false, devido à fila estar vazia.

Esse método foi projetado para ser usado por um sincronizador justo para evitar barras. Esse método do #tryAcquire sincronizador deve retornar falsee seu #tryAcquireShared método deve retornar um valor negativo, se esse método retornar true (a menos que seja uma aquisição reentrante). Por exemplo, o tryAcquire método para um sincronizador de modo justo, reentrante e exclusivo pode ter esta aparência:

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

Adicionado em 1.7.

Java documentação para java.util.concurrent.locks.AbstractQueuedSynchronizer.hasQueuedPredecessors().

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Aplica-se a