サブスクリプションは、データ交換#を仲介する目的で、パブリッシャーとサブスクライバーによって共有できます。 ##。そのため、subscribe() メソッドは作成されたサブスクリプションを返さず、代わりに void を返します。サブスクリプションは、onSubscribe() メソッド コールバックを通じてのみサブスクライバに渡されます。サブスクリプション インターフェイスには、request() と cancel() の 2 つのメソッドが含まれています。
構文
<strong>public interface Subscription {
public void request(long n);
public void cancel();
}</strong>
サブスクリプション インターフェイス ルール:
##Subscription.request()- および サブスクリプション。 cancel() メソッドは、サブスクライバーのコンテキスト内でのみ呼び出すことができます。 サブスクリプションでは、サブスクライバーが
Subscription.request()- メソッド onNext() または onSubscribe() メソッドを内部から同期的に呼び出すことができる必要があります。
Subscription.request()- このメソッドでは、publishers と subscribers の間で発生する可能性のある同期再帰の上限を設定する必要があります。
Subscription.request()- メソッドは呼び出し元の応答性を尊重して返す必要があります。
Subscription.cancel()- メソッドはタイムリーに返す必要があります。戻り値は呼び出し元の応答性を尊重し、スレッドセーフである必要があります。 strong>サブスクリプションがキャンセルされていない間、
Subscription.request(long n)- メソッドは、対応するサブスクライバーに対して生成される追加要素を指定された数だけ登録する必要があります。 サブスクリプションはキャンセルされませんが、
Subscription.request(long n) - メソッドは onError() メソッドを呼び出して IllegalArgumentException をスローする必要があります パラメータが 0 以下の場合。 サブスクリプションがキャンセルされていない場合、Subscription.request(long n)
- メソッドは、このサブスクライバーまたは他のサブスクライバーの onNext() メソッドを同期的に呼び出すことができます。 サブスクリプションがキャンセルされていない場合、
Subscription.request(long n)- メソッドは onComplete() または onError() を呼び出すことがあります。メソッドを同期的に実行します。 サブスクリプションがキャンセルされていない間、
Subscription.cancel()- メソッドは、サブスクライバーへのシグナル送信を停止するようにパブリッシャーに要求する必要があります。この操作は、サブスクリプションにすぐには影響しません。 サブスクリプションがキャンセルされていない間、
Subscription.cancel()- メソッドは、サブスクライバーによる対応するサブスクリプションへの参照を削除するようにパブリッシャーに要求する必要があります。
Subscription.cancel()- メソッドと Subscription.request() メソッドの呼び出しは、正常に返される必要があります。
>サブスクリプション - は、無制限の数のリクエスト呼び出しをサポートし、最大 2^63-1 をサポートする必要があります。需要が 2^63-1 以上の場合、パブリッシャーは validunbounded を考慮することがあります。
以上がJava 9 の Subscription インターフェイスのルールは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。