AbstractQueuedSynchronizer.HasQueuedPredecessors 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
查詢是否有執行緒比目前執行緒等待獲得的時間更久。
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 所創建與分享的作品,並依授權條款所描述的使用進行修改。