Untitled
unknown
java
4 years ago
1.7 kB
9
Indexable
package com.cantire.pricing.apigateway.netprices;
import io.reactivex.rxjava3.core.Single;
import io.reactivex.rxjava3.core.SingleOnSubscribe;
import io.reactivex.rxjava3.schedulers.Schedulers;
/**
* @author Yevhen_Voroniuk
*/
public class RxJavaTest {
public static void main(String[] args) {
var firstCall = Single.create((SingleOnSubscribe<String>) emitter -> {
sleep(1000);
emitter.onSuccess("Hello");
});
var secondCall = Single.create((SingleOnSubscribe<Integer>) emitter -> {
sleep(1500);
emitter.onSuccess(42);
});
long start = System.nanoTime();
var firstCombinedCall =
Single.zip(
firstCall.subscribeOn(Schedulers.io()),
secondCall.subscribeOn(Schedulers.io()),
(s, integer) -> s + integer.toString());
var thirdCall = Single.create((SingleOnSubscribe<String>) emitter -> {
sleep(500);
emitter.onSuccess(" World");
});
var secondCombinedCall =
Single.zip(
firstCombinedCall.subscribeOn(Schedulers.io()),
thirdCall.subscribeOn(Schedulers.io()),
(s1, s2) -> s1 + s2);
var res = secondCombinedCall.blockingGet();
System.out.println(res);
printCurrentTime("Execution time", start);
}
public static void sleep(long millis) {
try {
Thread.sleep(millis);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private static void printCurrentTime(String text, long startNanos) {
long time = (System.nanoTime() - startNanos) / 1000000;
System.out.println(text + ": " + time + "ms");
}
}
Editor is loading...