語言

ICondition.Await 方法

定義

多載

名稱 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 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於