Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java 9のサブスクリプションインターフェイスのルールは何ですか?


サブスクリプション データを仲介する目的で、1人のパブリッシャーと1人のサブスクライバーが共有できます 交換 。それがsubscribe()の理由です メソッドは作成されたサブスクリプションを返しませんが、代わりに voidを返します 。サブスクリプションは、 onSubscribe()を介してのみサブスクライバーに渡されます メソッドコールバック。サブスクリプションインターフェースには、 request()の2つのメソッドが含まれています。 およびcancel()

構文
public interface Subscription {
   public void request(long n);
   public void cancel();
}

サブスクリプションインターフェイスのルール:

  • Subscription.request() およびSubscription.cancel() メソッドは、サブスクライバーコンテキスト内でのみ呼び出す必要があります。
  • サブスクリプションでは、サブスクライバーが Subscription.request()を呼び出すことができるようにする必要があります onNext()内から同期的にメソッド またはonSubscribe() メソッド。
  • Subscription.request() メソッドは、パブリッシャー間の同期再帰の可能性に上限を設定する必要があります およびサブスクライバー
  • Subscription.request() メソッドは、タイムリーに戻ることにより、発信者の責任を尊重する必要があります。
  • Subscription.cancel() メソッドは、タイムリーに戻ることによって呼び出し元の応答性を尊重する必要があり、スレッドセーフである必要があります。 。
  • サブスクリプションはキャンセルされませんが、 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以上の需要が、パブリッシャーによって効果的にと見なされる可能性がある場合 無制限

  1. Java 9での@Deprecatedアノテーションの改善点は何ですか?

    @Deprecatedで注釈を付けることができる要素 この特定の要素が以下の理由で使用されなくなったことを意味します 使用するのは危険であり、エラーが発生する可能性があります。 将来のバージョンでは互換性がなくなる可能性があります。 将来のバージョンで削除される可能性があります。 より優れた、より効率的なソリューションがそれに取って代わりました。 Java 9には、次の2つの新しい要素が追加されています。以降 およびforRemoval 属性。 1)以降: この要素は、注釈付きAPI要素の非推奨バージョンを指定します。 2)forRemoval: 注釈付きのAPI要素を表す

  2. Javaのpaint()メソッドとrepaint()メソッドの違いは何ですか?

    Paint()とRepaint() paint(): このメソッドは、このコンポーネントをペイントするための命令を保持します。 Java Swingでは、paintが paintBorder()を呼び出すときに、paint()メソッドの代わりにpaintComponent()メソッドを変更できます。 paintComponent() およびpaintChildren() メソッド。このメソッドを直接呼び出すことはできません。代わりに、 repaint()を呼び出すことができます。 。 repaint() :このメソッドはオーバーライドできません。 paint()を制御します サイ