Exchanger.Exchange 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| Exchange(Object) |
等待另一個執行緒抵達此交換點(除非目前執行緒被 Thread#interrupt 中斷),然後將指定物件傳送給該執行緒,並接收該物件作為回報。 |
| Exchange(Object, Int64, TimeUnit) |
等待另一個執行緒抵達此交換點(除非當前執行緒被 Thread#interrupt 中斷或指定的等待時間已過),然後將指定物件傳送給該執行緒,並接收該物件作為回報。 |
Exchange(Object)
等待另一個執行緒抵達此交換點(除非目前執行緒被 Thread#interrupt 中斷),然後將指定物件傳送給該執行緒,並接收該物件作為回報。
[Android.Runtime.Register("exchange", "(Ljava/lang/Object;)Ljava/lang/Object;", "GetExchange_Ljava_lang_Object_Handler")]
public virtual Java.Lang.Object? Exchange(Java.Lang.Object? x);
[<Android.Runtime.Register("exchange", "(Ljava/lang/Object;)Ljava/lang/Object;", "GetExchange_Ljava_lang_Object_Handler")>]
abstract member Exchange : Java.Lang.Object -> Java.Lang.Object
override this.Exchange : Java.Lang.Object -> Java.Lang.Object
參數
- x
- Object
交換的目標
傳回
由另一執行緒提供的物件
- 屬性
備註
等待另一個執行緒抵達此交換點(除非目前執行緒被 Thread#interrupt 中斷),然後將指定物件傳送給該執行緒,並接收該物件作為回報。
如果交換點已有其他執行緒等待,則該執行緒會為了執行緒排程而繼續,並接收當前執行緒傳入的物件。 當前執行緒會立即回傳,接收由該執行緒傳給交換的物件。
如果交換區沒有其他執行緒在等待,則目前執行緒會被停用以進行執行緒排程,並處於休眠狀態,直到以下兩種情況之一發生:<ul<>li>有其他執行緒進入交換;或 <li>其他執行緒 Thread#interrupt 中斷目前執行緒。 </ul>
如果目前執行緒:<ul><li>在進入此方法時已設定中斷狀態;或 <li>在等待交換時被 Thread#interrupted 中斷,<則InterruptedException會拋出 /ul>,當前執行緒的中斷狀態會被清除。
Java 文件 java.util.concurrent.Exchanger.exchange(V)。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
Exchange(Object, Int64, TimeUnit)
等待另一個執行緒抵達此交換點(除非當前執行緒被 Thread#interrupt 中斷或指定的等待時間已過),然後將指定物件傳送給該執行緒,並接收該物件作為回報。
[Android.Runtime.Register("exchange", "(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;", "GetExchange_Ljava_lang_Object_JLjava_util_concurrent_TimeUnit_Handler")]
public virtual Java.Lang.Object? Exchange(Java.Lang.Object? x, long timeout, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("exchange", "(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;", "GetExchange_Ljava_lang_Object_JLjava_util_concurrent_TimeUnit_Handler")>]
abstract member Exchange : Java.Lang.Object * int64 * Java.Util.Concurrent.TimeUnit -> Java.Lang.Object
override this.Exchange : Java.Lang.Object * int64 * Java.Util.Concurrent.TimeUnit -> Java.Lang.Object
參數
- x
- Object
交換的目標
- timeout
- Int64
等待時間最長
- unit
- TimeUnit
論證的時間 timeout 單位
傳回
由另一執行緒提供的物件
- 屬性
備註
等待另一個執行緒抵達此交換點(除非當前執行緒被 Thread#interrupt 中斷或指定的等待時間已過),然後將指定物件傳送給該執行緒,並接收該物件作為回報。
如果交換點已有其他執行緒等待,則該執行緒會為了執行緒排程而繼續,並接收當前執行緒傳入的物件。 當前執行緒會立即回傳,接收由該執行緒傳給交換的物件。
如果交換區沒有其他執行緒在等待,則目前執行緒會被停用以進行執行緒排程,並處於休眠狀態,直到以下三種情況之一發生:<ul<>li>有其他執行緒進入交換;或 <li>其他執行緒 Thread#interrupt 中斷目前執行緒;或 <li>指定等待時間過去。 </ul>
如果目前執行緒:<ul><li>在進入此方法時已設定中斷狀態;或 <li>在等待交換時被 Thread#interrupted 中斷,<則InterruptedException會拋出 /ul>,當前執行緒的中斷狀態會被清除。
若等待時間超過,則 TimeoutException 會被棄權。 若時間小於或等於零,該方法將完全不等待。
Java 文件 java.util.concurrent.Exchanger.exchange(V, long, java.util.concurrent.TimeUnit)。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。