語言

SubmissionPublisher.Offer 方法

定義

多載

名稱 Description
Offer(Object, IBiPredicate)

若可能,透過非同步調用該 Flow.Subscriber#onNext(Object) onNext 方法,將該項目發佈給每位現有訂閱者。

Offer(Object, Int64, TimeUnit, IBiPredicate)

如果可能,透過非同步呼叫該 Flow.Subscriber#onNext(Object) onNext 方法,將指定項目發佈給每個當前訂閱者,當任何訂閱的資源無法使用時,阻塞至指定的逾時或呼叫執行緒被中斷,屆時呼叫該處理程序(若非空)會被呼叫,若回傳為真,則重新嘗試一次。

Offer(Object, IBiPredicate)

若可能,透過非同步調用該 Flow.Subscriber#onNext(Object) onNext 方法,將該項目發佈給每位現有訂閱者。

[Android.Runtime.Register("offer", "(Ljava/lang/Object;Ljava/util/function/BiPredicate;)I", "GetOffer_Ljava_lang_Object_Ljava_util_function_BiPredicate_Handler", ApiSince=33)]
public virtual int Offer(Java.Lang.Object? item, Java.Util.Functions.IBiPredicate? onDrop);
[<Android.Runtime.Register("offer", "(Ljava/lang/Object;Ljava/util/function/BiPredicate;)I", "GetOffer_Ljava_lang_Object_Ljava_util_function_BiPredicate_Handler", ApiSince=33)>]
abstract member Offer : Java.Lang.Object * Java.Util.Functions.IBiPredicate -> int
override this.Offer : Java.Lang.Object * Java.Util.Functions.IBiPredicate -> int

參數

item
Object

要發佈的(非空)項目

onDrop
IBiPredicate

若非空,處理器會在 drop 時呼叫訂閱者,並包含訂閱者與項目的參數;若回傳為真,則會重新嘗試(一次)

傳回

若為負數,則為(負數)滴數;否則,則為最大滯後的估計值

屬性

備註

若可能,透過非同步調用該 Flow.Subscriber#onNext(Object) onNext 方法,將該項目發佈給每位現有訂閱者。 若資源限制超過,該項目可能會被一位或多位訂閱者丟棄,若非空,則會呼叫該處理程序,若回傳為真,則重試一次。 在呼叫處理器時,其他執行緒對此類別中方法的呼叫會被阻擋。 除非能保證恢復,否則選項通常僅限於記錄錯誤和/或向用戶發出 Flow.Subscriber#onError(Throwable) onError 訊號。

此方法回傳狀態指示器:若為負,代表掉落次數(失敗嘗試向訂閱者發放該項目)。 否則,這是所有現有訂閱者最大延遲(已提交但尚未消費的項目數量)的估計值。 如果有訂閱者,這個值至少是一(考慮本已提交項目),否則為零。

如果該發佈者的執行者在嘗試非同步通知訂閱者時拋出 RejectedExecutionException(或其他任何 RuntimeException 或錯誤),或丟棄處理程序在處理遺失項目時拋出異常,則該例外會被重新拋出。

Java 文件 java.util.concurrent.SubmissionPublisher.offer(T, java.util.function.BiPredicate<java.util.concurrent.Flow.Subscriber<? super T>, ? super T>)。

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

適用於

Offer(Object, Int64, TimeUnit, IBiPredicate)

如果可能,透過非同步呼叫該 Flow.Subscriber#onNext(Object) onNext 方法,將指定項目發佈給每個當前訂閱者,當任何訂閱的資源無法使用時,阻塞至指定的逾時或呼叫執行緒被中斷,屆時呼叫該處理程序(若非空)會被呼叫,若回傳為真,則重新嘗試一次。

[Android.Runtime.Register("offer", "(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;Ljava/util/function/BiPredicate;)I", "GetOffer_Ljava_lang_Object_JLjava_util_concurrent_TimeUnit_Ljava_util_function_BiPredicate_Handler", ApiSince=33)]
public virtual int Offer(Java.Lang.Object? item, long timeout, Java.Util.Concurrent.TimeUnit? unit, Java.Util.Functions.IBiPredicate? onDrop);
[<Android.Runtime.Register("offer", "(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;Ljava/util/function/BiPredicate;)I", "GetOffer_Ljava_lang_Object_JLjava_util_concurrent_TimeUnit_Ljava_util_function_BiPredicate_Handler", ApiSince=33)>]
abstract member Offer : Java.Lang.Object * int64 * Java.Util.Concurrent.TimeUnit * Java.Util.Functions.IBiPredicate -> int
override this.Offer : Java.Lang.Object * int64 * Java.Util.Concurrent.TimeUnit * Java.Util.Functions.IBiPredicate -> int

參數

item
Object

要發佈的(非空)項目

timeout
Int64

任何訂閱者等待資源多久才會放棄,單位為 unit

unit
TimeUnit

TimeUnit A 如何詮釋參數timeout

onDrop
IBiPredicate

若非空,處理器會在 drop 時呼叫訂閱者,並包含訂閱者與項目的參數;若回傳為真,則會重新嘗試(一次)

傳回

若為負數,則為(負數)滴數;否則,則為最大滯後的估計值

屬性

備註

如果可能,透過非同步呼叫該 Flow.Subscriber#onNext(Object) onNext 方法,將指定項目發佈給每個當前訂閱者,當任何訂閱的資源無法使用時,阻塞至指定的逾時或呼叫執行緒被中斷,屆時呼叫該處理程序(若非空)會被呼叫,若回傳為真,則重新嘗試一次。 (丟棄處理程序可透過檢查當前執行緒是否中斷來區分逾時與中斷。)在呼叫處理器時,其他執行緒對此類別中方法的呼叫會被阻擋。 除非能保證恢復,否則選項通常僅限於記錄錯誤和/或向用戶發出 Flow.Subscriber#onError(Throwable) onError 訊號。

此方法回傳狀態指示器:若為負,代表掉落次數(失敗嘗試向訂閱者發放該項目)。 否則,這是所有現有訂閱者最大延遲(已提交但尚未消費的項目數量)的估計值。 如果有訂閱者,這個值至少是一(考慮本已提交項目),否則為零。

如果該發佈者的執行者在嘗試非同步通知訂閱者時拋出 RejectedExecutionException(或其他任何 RuntimeException 或錯誤),或丟棄處理程序在處理遺失項目時拋出異常,則該例外會被重新拋出。

Java 文件 java.util.concurrent.SubmissionPublisher.offer(T, long, java.util.concurrent.TimeUnit, java.util.function.BiPredicate<java.util.concurrent.Flow.Subscriber<? super T>, ? super T>)。

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

適用於