CyclicBarrier.Await 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| Await() |
等待所有 #getParties 黨都動用 |
| Await(Int64, TimeUnit) |
等待所有 #getParties 方都啟動 |
Await()
等待所有 #getParties 黨都動用 await 這項障礙。
[Android.Runtime.Register("await", "()I", "GetAwaitHandler")]
public virtual int Await();
[<Android.Runtime.Register("await", "()I", "GetAwaitHandler")>]
abstract member Await : unit -> int
override this.Await : unit -> int
傳回
目前執行緒的到達索引,其中 index getParties() - 1 代表第一個到達的,0 代表最後一個到達的
- 屬性
例外狀況
如果當前執行緒在等待時被中斷
如果當前執行緒等待時有 其他 執行緒被中斷或逾時,或障礙被重置,或在呼叫時 await 障礙被破壞,或障礙動作(若存在)因例外而失敗
備註
等待所有 #getParties 黨都動用 await 這項障礙。
若目前執行緒不是最後抵達,則為執行緒排程目的會被停用,並處於休眠狀態,直到以下情況發生:ul>li 最後一個執行緒到達;或 <li>其他執行緒 Thread#interrupt 中斷當前執行緒;或 <li>其他執行緒 Thread#interrupt 中斷其他等待執行緒;或 <li>其他執行緒在等待障礙時逾時;或 <li>其他執行緒><<喚起#reset這道障礙。
</ul>
如果目前執行緒: <ul><li>在進入此方法時已設定中斷狀態;或 <li>在等待 </ul>InterruptedException 時被中斷執行緒,則會拋出,並清除目前執行緒的中斷狀態。
如果障礙發生 #reset 在任何執行緒等待時,或當呼叫時 await 障礙 #isBroken 被打破,或任一執行緒等待時,則 BrokenBarrierException 會被拋棄。
如果任何執行緒在等待時被 Thread#interrupt 中斷,則所有其他等待中的執行緒都會拋出 BrokenBarrierException ,障礙會進入破壞狀態。
如果目前執行緒是最後抵達的執行緒,且建構子中提供了非空障礙動作,則當前執行緒執行該動作後才允許其他執行緒繼續。 若在障礙動作中發生異常,該異常會在當前執行緒中傳播,障礙會被置於破壞狀態。
的 java.util.concurrent.CyclicBarrier.await()Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
適用於
Await(Int64, TimeUnit)
等待所有 #getParties 方都啟動 await 此障礙,或規定的等待時間結束。
[Android.Runtime.Register("await", "(JLjava/util/concurrent/TimeUnit;)I", "GetAwait_JLjava_util_concurrent_TimeUnit_Handler")]
public virtual int Await(long timeout, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("await", "(JLjava/util/concurrent/TimeUnit;)I", "GetAwait_JLjava_util_concurrent_TimeUnit_Handler")>]
abstract member Await : int64 * Java.Util.Concurrent.TimeUnit -> int
override this.Await : int64 * Java.Util.Concurrent.TimeUnit -> int
參數
- timeout
- Int64
等待結界的時間
- unit
- TimeUnit
逾時參數的時間單位
傳回
目前執行緒的到達索引,其中 index getParties() - 1 代表第一個到達的,0 代表最後一個到達的
- 屬性
例外狀況
如果當前執行緒在等待時被中斷
若逾時時間過了
如果當前執行緒等待時有 其他 執行緒被中斷或逾時,或障礙被重置,或在呼叫時 await 障礙被破壞,或障礙動作(若存在)因例外而失敗
備註
等待所有 #getParties 方都啟動 await 此障礙,或規定的等待時間結束。
若目前執行緒不是最後抵達,則該執行緒會被停用以排程,並處於休眠狀態,直到以下情況發生:ul>li 最後一個執行緒到達;或 <li>指定的逾時過了;或 <li>其他執行緒 Thread#interrupt 中斷當前執行緒;或 <li>其他執行緒 Thread#interrupt 中斷其他等待執行緒;或 <li>><<其他線程在等待障礙時會超時;或者<說>,有其他線索在這道屏障上召喚#reset。
</ul>
如果目前執行緒: <ul><li>在進入此方法時已設定中斷狀態;或 <li>在等待 </ul>InterruptedException 時被中斷執行緒,則會拋出,並清除目前執行緒的中斷狀態。
若等待時間超過,則 TimeoutException 會被棄權。 若時間小於或等於零,該方法將完全不等待。
如果障礙發生 #reset 在任何執行緒等待時,或當呼叫時 await 障礙 #isBroken 被打破,或任一執行緒等待時,則 BrokenBarrierException 會被拋棄。
如果任何執行緒在等待時被 Thread#interrupt 中斷,則所有其他等待中的執行緒都會拋出 BrokenBarrierException ,障礙會進入破壞狀態。
如果目前執行緒是最後抵達的執行緒,且建構子中提供了非空障礙動作,則當前執行緒執行該動作後才允許其他執行緒繼續。 若在障礙動作中發生異常,該異常會在當前執行緒中傳播,障礙會被置於破壞狀態。
的 java.util.concurrent.CyclicBarrier.await(long, java.util.concurrent.TimeUnit)Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。