RxJava Tutorial on RxJava Using CompositeDisposable

the compositedisposable class represents a container which can hold multiple disposable and offers o(1) complexity of adding and removing disposables.

class declaration

following is the declaration for io.reactivex.disposables.compositedisposable class −

public final class compositedisposable
extends object
implements disposable, io.reactivex.internal.disposables.disposablecontainer

compositedisposable example

create the following java program using any editor of your choice in, say, c:\> rxjava.

observabletester.java

import io.reactivex.maybe;
import io.reactivex.single;
import io.reactivex.disposables.compositedisposable;
import io.reactivex.disposables.disposable;
import io.reactivex.observers.disposablemaybeobserver;
import io.reactivex.observers.disposablesingleobserver;
import io.reactivex.schedulers.schedulers;

import java.util.concurrent.timeunit;

public class observabletester  {
   public static void main(string[] args)  throws interruptedexception {    
      compositedisposable compositedisposable = new compositedisposable();

      //create an single observer 
      disposable disposablesingle = single.just("hello world")
      .delay(2, timeunit.seconds, schedulers.io())
      .subscribewith(
      new disposablesingleobserver<string>() {
         @override
         public void onerror(throwable e) {
            e.printstacktrace();
         }

         @override
         public void onsuccess(string value) {
            system.out.println(value);
         }
      }); 

      //create an observer
      disposable disposablemaybe = maybe.just("hi")
      .delay(2, timeunit.seconds, schedulers.io())
      .subscribewith(new disposablemaybeobserver<string>() {
         @override
         public void onerror(throwable e) { 
            e.printstacktrace();
         }

         @override
         public void onsuccess(string value) {
            system.out.println(value);
         }

         @override
         public void oncomplete() {
            system.out.println("done!");
         }
      }); 

      thread.sleep(3000);

      compositedisposable.add(disposablesingle);
      compositedisposable.add(disposablemaybe);

      //start observing
      compositedisposable.dispose();
   }
}

verify the result

compile the class using javac compiler as follows −

c:\rxjava>javac observabletester.java

now run the observabletester as follows −

c:\rxjava>java observabletester

it should produce the following output −

hello world
hi