語言

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()。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於