ホームページ > Java > &#&チュートリアル > Java 9 で Flow API を使用してリアクティブ ストリーミングを実装するにはどうすればよいですか?

Java 9 で Flow API を使用してリアクティブ ストリーミングを実装するにはどうすればよいですか?

王林
リリース: 2023-09-19 23:49:02
転載
804 人が閲覧しました

如何在Java 9中使用Flow API实现响应式流?

Flow API は、Java 9 以降のリアクティブ フロー仕様の公式サポートです。これは、Iterator Observer を組み合わせた パターンです。 Flow API は相互運用仕様であり、RxJava のようなエンドユーザー API ではありません。

フロー API は 4 つの基本インターフェイスで構成されます。

  • サブスクライバ : サブスクライバからパブリッシャーへ コールバックへのサブスクライブ。
  • パブリッシャー: パブリッシャーは、登録されたサブスクライバーにデータ項目のストリームをパブリッシュします。
  • サブスクリプション: パブリッシャーとサブスクライバー間のリンク。
  • プロセッサ: プロセッサは、パブリッシャとサブスクライバの間に位置し、あるストリームを別のストリームに変換します。

以下の例では、データ オブジェクトをリクエストし、それを印刷し、別のデータ オブジェクトをリクエストする基本的なサブスクライバを作成します。 Java によって提供されるパブリッシャー実装 (SubmissionPublisher) を使用してセッションを完了できます。

import java.util.concurrent.Flow;
import java.util.List;
import java.util.concurrent.SubmissionPublisher;

class MySubscriber<T>implements <strong>Flow.Subscriber<T></strong> {
   private <strong>Flow.Subscription</strong> subscription;
   <strong>@Override</strong>
   public void <strong>onSubscribe</strong>(Flow.Subscription subscription) {
      this.subscription = subscription;
      this.subscription.request(1);
   }
   <strong>@Override</strong>
   public void <strong>onNext</strong>(T item) {
      System.out.println(item);
      subscription.request(1);
   }
   <strong>@Override</strong>
   public void <strong>onError</strong>(Throwable throwable) {
      throwable.printStackTrace();
   }
   <strong>@Override</strong>
   public void <strong>onComplete</strong>() {
      System.out.println("Done");
   }
}

<strong>// main class</strong>
public class FlowTest {
   public static void main(String args[]) {
      <strong>List<String></strong> items = <strong>List.of</strong>("1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
      <strong>SubmissionPublisher<String></strong> publisher = new SubmissionPublisher<>();
      publisher.<strong>subscribe</strong>(new MySubscriber<>());
      items.forEach(s -> {
         try {
            Thread.sleep(1000);
         } catch (InterruptedException e) {
            e.printStackTrace();
         }
         publisher.<strong>submit</strong>(s);
      });
      publisher.close();
   }
}
ログイン後にコピー

出力

<strong>1
2
3
4
5
6
7
8
9</strong>
<strong>10
Done</strong>
ログイン後にコピー

以上がJava 9 で Flow API を使用してリアクティブ ストリーミングを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート