Язык

AbstractQueuedSynchronizer.HasQueuedPredecessors Свойство

Определение

Запросы, ожидающие получения потока дольше текущего потока.

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

Значение свойства

true Если перед текущим потоком существует очередь, а false текущий поток находится в голове очереди или очередь пуста.

Атрибуты

Комментарии

Запросы, ожидающие получения потока дольше текущего потока.

Вызов этого метода эквивалентен (но может быть более эффективным, чем):

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

Обратите внимание, что, так как отмена из-за прерываний и времени ожидания может возникать в любое время, true возврат не гарантирует, что другой поток получится до текущего потока. Аналогичным образом, для другого потока можно выиграть гонку, чтобы закручиться после возврата falseэтого метода, из-за того, что очередь пуста.

Этот метод предназначен для использования справедливым синхронизатором, чтобы избежать штриховки. Такой метод синхронизатора #tryAcquire должен возвращать false, и его #tryAcquireShared метод должен возвращать отрицательное значение, если этот метод возвращает (если это не является true повторным получением). Например, tryAcquire метод для справедливой, повторной передачи и монопольного синхронизатора режима может выглядеть следующим образом:

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

Добавлено в версии 1.7.

Java документации по java.util.concurrent.locks.AbstractQueuedSynchronizer.hasQueuedPredecessors().

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

Применяется к