AbstractQueuedSynchronizer.HasQueuedPredecessors Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.
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.