如何在 Java 9 中实现 Flow.Publisher 接口?
javaobject oriented programmingprogramming更新于 2025/10/17 14:04:17
Publisher 接口是无限数量的序列元素的提供者,根据从其 Subscriber 收到的需求发布这些元素。响应调用 Publisher.subscribe(Subscriber),Subscriber 上的方法的可能调用序列。这意味着 onSubscribe() 方法,后面跟着无限数量的 onNext() 方法(根据 Subscriber 的要求),然后是 onError() 方法(如果发生故障)或 onComplete() 方法(只要 Subscription 未被取消)。
语法
public interface Publisher<T> {
public void subscribe(Subscriber<? super T> s);
}
示例
import java.util.concurrent.*;
import java.util.*;
import java.util.stream.*;
class SimplePublisher implements Flow.Publisher<Integer> {
private final Iterator<Integer> iterator;
SimplePublisher(int count) {
this.iterator = IntStream.rangeClosed(1, count).iterator();
}
@Override
public void subscribe(Flow.Subscriber<? super Integer> subscriber) {
iterator.forEachRemaining(subscriber::onNext);
subscriber.onComplete();
}
}
public class SimplePublisherImplTest {
public static void main(String args[]) {
new SimplePublisher(10).subscribe(new Flow.Subscriber<>() {
@Override
public void onSubscribe(Flow.Subscription subscription) {
}
@Override
public void onNext(Integer item) {
System.out.println("item = [" + item + "]");
}
@Override
public void onError(Throwable throwable) {
}
@Override
public void onComplete() {
System.out.println("complete");
}
});
}
}
输出
item = [1] item = [2] item = [3] item = [4] item = [5] item = [6] item = [7] item = [8] item = [9] item = [10] complete
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

