public static void main(String[] args) {
Observable.fromCallable(thatReturnsNumberOne()) // the Observable
.map(numberToString()) // the Operator
.subscribe(printResult()); // the Subscriber
}
/*
Output of the above program:
---------------------------
Observable thread: main
Operator thread: main
Subscriber thread: main
Result: 1
*/
private Callable<Integer> thatReturnsNumberOne() {
return () -> {
System.out.println("Observable thread: " + Thread.currentThread().getName());
return 1;
};
}
private Func1<Integer, String> numberToString() {
return number -> {
System.out.println("Operator thread: " + Thread.currentThread().getName());
return String.valueOf(number);
};
}
private Action1<String> printResult() {
return result -> {
System.out.println("Subscriber thread: " + Thread.currentThread().getName());
System.out.println("Result: " + result);
};
}
public static void main(String[] args) {
Observable.fromCallable(thatReturnsNumberOne())
.map(numberToString())
.observeOn(Schedulers.newThread()) // subscriber on different thread
.subscribe(printResult());
}
/*
Output of the above program:
---------------------------
Observable thread: main
Operator thread: main
Subscriber thread: RxNewThreadScheduler-1
Result: 1
*/
public static void main(String[] args) {
Observable.fromCallable(thatReturnsNumberOne())
.observeOn(Schedulers.newThread()) // operator on different thread
.map(numberToString())
.subscribe(printResult());
}
/*
Output of the above program:
---------------------------
Observable thread: main
Operator thread: RxNewThreadScheduler-1
Subscriber thread: RxNewThreadScheduler-1
Result: 1
*/
public static void main(String[] args) {
Observable.fromCallable(thatReturnsNumberOne())
.observeOn(Schedulers.newThread()) // operator on different thread
.map(numberToString())
.observeOn(Schedulers.newThread()) // subscriber on different thread
.subscribe(printResult());
}
/*
Output of the above program:
---------------------------
Observable thread: main
Operator thread: RxNewThreadScheduler-2
Subscriber thread: RxNewThreadScheduler-1
Result: 1
*/
原文:https://praveer09.github.io/technology/2016/02/29/rxjava-part-3-multithreading/