What are the steps to execute Flow API in Java 9?

JavaObject Oriented ProgrammingProgramming

Flow API in Java 9 corresponds to Reactive Streams specification, which is a defacto standard. It contains a minimal set of interfaces that capture the heart of asynchronous publication and subscription.

Below are the key interfaces of Flow API:

1) Flow.Publisher: It produces items for subscribers to consume, and it contains only method: subscribe(Subscriber), whose purpose should be obvious.


void subscribe(Flow.Subscriber<? super T> subscriber)

2) Flow.Subscriber: It subscribes to publishers (usually only one) to receive items (via method onNext(T)), error messages (onError(Throwable)), or a signal that no more items are to be expected (onComplete()). Before any of those things happen, the publisher calls onSubscription(Subscription) method.


void onSubscribe(Flow.Subscription subscription)
void onNext(T item)
void onError(Throwable throwable)
void onComplete()

3) Flow.Subscription: The connection between a single publisher and a single subscriber. The subscriber can use it to request more items (request(long)) or break the connection (cancel()).


void request(long n)
void cancel()

Execution steps for Flow API:

  • First, we need to create a Publisher and a Subscriber.
  • Subscribe the subscriber with Publisher:: subscribe.
  • The publisher creates a Subscription and calls Subscriber::onSubscription with it, so the subscriber can store the subscription.
  • At some point, the subscriber calls Subscription:: request to request a number of items.
  • The publisher starts handing items to the subscriber by calling Subscriber::onNext. It never publishes more than the requested number of items.
  • The publisher might at some point be run into trouble and call Subscriber::onComplete or Subscriber::onError, respectively.
  • The subscriber might either continue to request more items every now and then or cut the connection by calling Subscription:: cancel.
Updated on 14-Apr-2020 13:01:43