RxJava - Using Flowable



The Flowable class represents 0..N flows, Emits 0 or n items. Supports Reactive-Streams and back-pressure.

Class Declaration

Following is the declaration for io.reactivex.rxjava3.core.Flowable<T> class −

public abstract class Flowable<T>
   extends Object
      implements Publisher<T>

Protocol

Following is the sequential protocol that Flowable Observable operates −

onSubscribe onNext* (onError | OnComplete)?

Example - Creating a Flowable Observable Class to get Data

ObservableTester.java

package com.tutorialspoint;

import io.reactivex.rxjava3.core.Flowable;

public class ObservableTester {
   public static void main(String[] args) throws InterruptedException {
      Flowable.just("Hello world").subscribe(System.out::println);
   }
}

Output

Compile and Run the code to verify the following output −

Hello World

Example - Usage of Flowable Observable Class to get Data after a delay of 2 seconds

ObservableTester.java

package com.tutorialspoint;

import java.util.concurrent.TimeUnit;

import io.reactivex.rxjava3.core.Flowable;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.observers.DisposableSingleObserver;
import io.reactivex.rxjava3.schedulers.Schedulers;
import io.reactivex.rxjava3.subscribers.DisposableSubscriber;

public class ObservableTester  {
   public static void main(String[] args)  throws InterruptedException {
      //Create the observable
      Flowable<String> testFlowable = Flowable.just("Hello World");

      //Create an observer
      Disposable disposable = testFlowable
         .delay(2, TimeUnit.SECONDS, Schedulers.io())
         .subscribeWith(
            new DisposableSubscriber<String>() {
               @Override 
               public void onStart() {
                  System.out.println("Start!");
                  request(1);
               }
               @Override 
               public void onNext(String t) {
                  System.out.println(t);
                  request(1);
               }
               @Override
               public void onError(Throwable t) {
                  t.printStackTrace();
               }
               @Override 
               public void onComplete() {
                  System.out.println("Done!");
               }
            }); 
      Thread.sleep(3000);
      //start observing
      disposable.dispose();
   }
}

Output

Compile and Run the code to verify the following output −

Start!
Hello World
Done!
Advertisements