語言

ICondition.AwaitUntil(Date) 方法

定義

導致目前執行緒等待被通知或中斷,或指定的截止期限過後才會進行。

[Android.Runtime.Register("awaitUntil", "(Ljava/util/Date;)Z", "GetAwaitUntil_Ljava_util_Date_Handler:Java.Util.Concurrent.Locks.IConditionInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public bool AwaitUntil(Java.Util.Date? deadline);
[<Android.Runtime.Register("awaitUntil", "(Ljava/util/Date;)Z", "GetAwaitUntil_Ljava_util_Date_Handler:Java.Util.Concurrent.Locks.IConditionInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member AwaitUntil : Java.Util.Date -> bool

參數

deadline
Date

絕對該等的時候

傳回

false 若截止日期已過且返回,否則 true

屬性

例外狀況

如果目前執行緒被中斷(且支援執行緒懸掛中斷)

備註

導致目前執行緒等待被通知或中斷,或指定的截止期限過後才會進行。

與此條件相關的鎖會原子釋放,當前執行緒因執行緒排程而被禁用,並處於休眠狀態,直到 <em 發生五件事>中的 em<一>:<ul><li>其他執行緒#signal呼叫此方法Condition,且當前執行緒恰好被選為被喚醒的執行緒;或 <li>其他執行緒呼叫#signalAllCondition方法;或 li<>其他執行緒 Thread#interrupt 會中斷目前執行緒,且支援中斷執行緒的暫停;或 <li>指定期限已過;或 <li>A ”<>EM 虛假喚醒</EM>“ 發生。 </ul>

在所有情況下,在此方法回傳之前,當前執行緒必須重新取得與此條件相關的鎖。 當執行緒回傳時,em <>保證<>會保留這個鎖。

如果目前執行緒:<ul><li>在進入此方法時已設定中斷狀態;或 <li>在等待期間被中斷執行緒#中斷,且支援<執行緒暫停,則>拋出 /ulInterruptedException,當前執行緒的中斷狀態被清除。 在第一種情況下,並未明確說明是否在解鎖前進行中斷測試。

回傳值表示截止日期是否已過,可用方式如下:

{@code
            boolean aMethod(Date deadline)
                throws InterruptedException {
              boolean stillWaiting = true;
              lock.lock();
              try {
                while (!conditionBeingWaitedFor()) {
                  if (!stillWaiting)
                    return false;
                  stillWaiting = theCondition.awaitUntil(deadline);
                }
                // ...
                return true;
              } finally {
                lock.unlock();
              }
            }}

<b>實施考<量/b>

當呼叫此方法時,假設目前執行緒持有與此 Condition 關聯的鎖。 是否如此,是否成立,以及如何回應,則由執行方決定。 通常會拋出一個例外(例如 IllegalMonitorStateException),實作必須記錄該事實。

實作可以偏好回應中斷,而非一般方法回傳訊號,或優先指示指定截止期限的通過。 無論哪種情況,實作都必須確保訊號會被重新導向到另一個等待執行緒(如果有的話)。

Java 文件 java.util.concurrent.locks.Condition.awaitUntil(java.util.Date)

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

適用於