RxJava Tutorial on RxJava PublishSubject

publishsubject emits items to currently subscribed observers and terminal events to current or late observers.

class declaration

following is the declaration for io.reactivex.subjects.publishsubject<t> class −

public final class publishsubject<t>
extends subject<t>

publishsubject example

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

observabletester.java

import io.reactivex.subjects.publishsubject;
public class observabletester  {
   public static void main(string[] args) {   
      final stringbuilder result1 = new stringbuilder();
      final stringbuilder result2 = new stringbuilder();         

      publishsubject<string> subject = publishsubject.create(); 
      subject.subscribe(value -> result1.append(value) ); 
      subject.onnext("a"); 
      subject.onnext("b"); 
      subject.onnext("c"); 
      subject.subscribe(value -> result2.append(value)); 
      subject.onnext("d"); 
      subject.oncomplete();

      //output will be abcd 
      system.out.println(result1);
      //output will be d only
      //as subscribed after c item emitted.
      system.out.println(result2);
   }
}

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 −

abcd
d