Home  >  Article  >  Java  >  How to implement Flow.Publisher interface in Java 9?

How to implement Flow.Publisher interface in Java 9?

王林
王林forward
2023-08-30 17:57:06885browse

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

A Publisher interface is a provider that provides an unlimited number of ordered elements, according to the order from its Subscriber(s) Release the requirements received. In response to calling Publisher.subscribe(Subscriber), the possible sequence of calls to the methods on Subscriber. This means the onSubscribe() method, followed by an unlimited number of onNext() methods (as required by Subscriber), and then onError() method (if there is a failure) or onComplete() method (when no more elements are available, as long as Subscription has not been cancelled).

Syntax

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

Example

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");
         }
      });
   }
}

Output

<strong>item = [1]
item = [2]
item = [3]
item = [4]
item = [5]
item = [6]
item = [7]
item = [8]
item = [9]
item = [10]
complete</strong>

The above is the detailed content of How to implement Flow.Publisher interface in Java 9?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete