Skip to content

Instantly share code, notes, and snippets.

@AdmiinX
Created November 24, 2016 23:23
Show Gist options
  • Save AdmiinX/95c68a22c6e9afff86fcc54729700822 to your computer and use it in GitHub Desktop.
Save AdmiinX/95c68a22c6e9afff86fcc54729700822 to your computer and use it in GitHub Desktop.
test to show the difference between RxJava operators (concat , concatEager, merge)
import org.junit.Test;
import java.util.concurrent.TimeUnit;
import rx.Observable;
import rx.observers.TestSubscriber;
public class RxJavaTest{
@Test
public void testConcatenating(){
Observable<String> first = Observable.just("first").delay(1,TimeUnit.SECONDS);
Observable<String> second = Observable.just("second").delay(3,TimeUnit.SECONDS);
Observable<String> third = Observable.just("third").delay(2,TimeUnit.SECONDS);
TestSubscriber<String> subscriber=new TestSubscriber<>();
final long[] startTime = {0};
System.out.println("======= concat =======");
Observable.concat(first, second, third)
.doOnSubscribe(() -> startTime[0] += System.currentTimeMillis())
.doOnNext(s -> System.out.println(s+" take "+(System.currentTimeMillis()-startTime[0])/1000 +" seconds"))
.subscribe(subscriber);
subscriber.awaitTerminalEvent();
TestSubscriber<String> subscriber2=new TestSubscriber<>();
final long[] startTime2 = {0};
System.out.println("======= concatEager =======");
Observable.concatEager(first, second, third)
.doOnSubscribe(() -> startTime2[0] += System.currentTimeMillis())
.doOnNext(s -> System.out.println(s+" take "+(System.currentTimeMillis()-startTime2[0])/1000 +" seconds"))
.subscribe(subscriber2);
subscriber2.awaitTerminalEvent();
TestSubscriber<String> subscriber3=new TestSubscriber<>();
final long[] startTime3 = {0};
System.out.println("======= merge =======");
Observable.merge(first, second, third)
.doOnSubscribe(() -> startTime3[0] += System.currentTimeMillis())
.doOnNext(s -> System.out.println(s+" take "+(System.currentTimeMillis()- startTime3[0])/1000 +" seconds"))
.subscribe(subscriber3);
subscriber3.awaitTerminalEvent();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment