ICondition.Await 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| Await() |
導致目前執行緒等待被通知或執行緒#中斷。 |
| Await(Int64, TimeUnit) |
導致目前執行緒等待,直到收到訊號或中斷,或指定的等待時間結束。 |
Await()
導致目前執行緒等待被通知或執行緒#中斷。
[Android.Runtime.Register("await", "()V", "GetAwaitHandler:Java.Util.Concurrent.Locks.IConditionInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public void Await();
[<Android.Runtime.Register("await", "()V", "GetAwaitHandler:Java.Util.Concurrent.Locks.IConditionInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member Await : unit -> unit
- 屬性
例外狀況
如果目前執行緒被中斷(且支援執行緒懸掛中斷)
備註
導致目前執行緒等待被通知或執行緒#中斷。
與此Condition相關的鎖會原子釋放,當前執行緒因執行緒排程而被停用,並處於休眠狀態,直到<發生四件事>中的 em<>/em< 一:ul><li>其他執行緒#signal呼叫此方法Condition,而當前執行緒恰巧被選為被喚醒的執行緒;或 <li 其他執行緒呼叫>此方法#signalAll;或 liCondition<>其他執行緒 Thread#interrupt 會中斷目前執行緒,且支援中斷執行緒的暫停;或稱 <li>A ”<>EM 虛假喚醒</EM>“ 發生。
</ul>
在所有情況下,在此方法回傳之前,當前執行緒必須重新取得與此條件相關的鎖。 當執行緒回傳時,em <>保證<>會保留這個鎖。
如果目前執行緒:<ul><li>在進入此方法時已設定中斷狀態;或 <li>在等待期間被中斷執行緒#中斷,且支援<執行緒暫停,則>拋出 /ulInterruptedException,當前執行緒的中斷狀態被清除。 在第一種情況下,並未明確說明是否在解鎖前進行中斷測試。
<b>實施考<量/b>
當呼叫此方法時,假設目前執行緒持有與此 Condition 關聯的鎖。 是否如此,是否成立,以及如何回應,則由執行方決定。 通常會拋出一個例外(例如 IllegalMonitorStateException),實作必須記錄該事實。
實作中可以偏好對中斷做出回應,而非一般方法回傳訊號。 此時實作必須確保訊號被導向到另一個等待執行緒(若有的話)。
Java 文件 java.util.concurrent.locks.Condition.await()。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
Await(Int64, TimeUnit)
導致目前執行緒等待,直到收到訊號或中斷,或指定的等待時間結束。
[Android.Runtime.Register("await", "(JLjava/util/concurrent/TimeUnit;)Z", "GetAwait_JLjava_util_concurrent_TimeUnit_Handler:Java.Util.Concurrent.Locks.IConditionInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public bool Await(long time, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("await", "(JLjava/util/concurrent/TimeUnit;)Z", "GetAwait_JLjava_util_concurrent_TimeUnit_Handler:Java.Util.Concurrent.Locks.IConditionInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member Await : int64 * Java.Util.Concurrent.TimeUnit -> bool
參數
- time
- Int64
等待時間最長
- unit
- TimeUnit
論證的時間 time 單位
傳回
false 若等待時間在返回前可偵測到已過,則 true
- 屬性
例外狀況
如果目前執行緒被中斷(且支援執行緒懸掛中斷)
備註
導致目前執行緒等待,直到收到訊號或中斷,或指定的等待時間結束。 此方法在行為上等同於:
{@code awaitNanos(unit.toNanos(time)) > 0}
Java 文件 java.util.concurrent.locks.Condition.await(long, java.util.concurrent.TimeUnit)。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。