首页 > Java > java教程 > 正文

如何在Java 9中实现Flow.Publisher接口?

王林
发布: 2023-08-30 17:57:06
转载
885 人浏览过

如何在Java 9中实现Flow.Publisher接口?

一个Publisher接口是一个提供无限数量的有序元素的提供者,根据从其Subscriber(s)接收到的需求进行发布。响应调用Publisher.subscribe(Subscriber)Subscriber上的方法的可能调用顺序。这意味着onSubscribe()方法,后跟无限数量的onNext()方法(根据Subscriber的要求),然后是onError()方法(如果有失败)或onComplete()方法(当没有更多元素可用时,只要Subscription未被取消)。

语法

<strong>public interface Publisher<T> {
   public void subscribe(Subscriber<? super T><!--? super T--> s);
}</strong>
登录后复制

示例

import java.util.concurrent.*;
import java.util.*;
import java.util.stream.*;

class SimplePublisher implements <strong>Flow.Publisher<Integer></strong> {
   private final <strong>Iterator<Integer></strong> iterator;
   SimplePublisher(int count) {
      this.iterator = <strong>IntStream</strong>.rangeClosed(1, count).iterator();
   }
   <strong>@Override</strong>
   public void <strong>subscribe</strong>(<strong>F</strong><strong>low.Subscriber<? super Integer></strong><!--? super Integer--> subscriber) {
      iterator.<strong>forEachRemaining</strong>(<strong>subscriber::onNext</strong>);
      subscriber.<strong>onComplete()</strong>;
   }
}

public class SimplePublisherImplTest {
   public static void main(String args[]) {
      new SimplePublisher(10).<strong>subscribe</strong>(new <strong>Flow.Subscriber<>()</strong> {
         <strong>@Override</strong>
         public void <strong>onSubscribe</strong>(<strong>Flow.Subscription</strong> subscription) {
         }
         <strong>@Override</strong>
         public void <strong>onNext</strong>(Integer item) {
            System.out.println("item = [" + item + "]");
         }
         <strong>@Override</strong>
         public void <strong>onError</strong>(Throwable throwable) {
         }
         <strong>@Override</strong>
         public void <strong>onComplete()</strong> {
            System.out.println("complete");
         }
      });
   }
}
登录后复制

输出

<strong>item = [1]
item = [2]
item = [3]
item = [4]
item = [5]
item = [6]
item = [7]
item = [8]
item = [9]
item = [10]
complete</strong>
登录后复制

以上是如何在Java 9中实现Flow.Publisher接口?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:tutorialspoint.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!