(RxJava는 비동기와 multi-thread 주목적이므로 network개발로 분류) 기초:REF
javadoc
데이타\처리 | Completable | Maybe | Single | Observable | Subject(외부에서 데이타주입가능) |
---|
Nothing | O | | | | |
One | | O | O | O | O |
More | | | | O | O |
Unlimited | | | | O | O |
<Observable과 Maybe 많이쓸만한 함수: 주로 양쪽에 다 존재>
Observable.subscribe ( Observer 또는 Consumer )
Observer는 { onComplete(), onError(), + onNext(), onSubscribe() }
Observable.subscribeOn (데이터주입 Schedule쓰레드)
Observable.observeOn (데이터처리 Schedule쓰레드)
.onSubscribe (Cosumer<Disposable {dispose()} >
(static).defer (Callable supplier ) : .create대신의 공급자. REF
Flowable.doOnSubscribe ( Consumer<Subscription {cancel(),request(r) } } org.reactivestreams?.Subscription
FlowableOnSubscribe inteface도 존재.
Maybe.doOnSuccess( Consumer
.doOnComplete ( Action ) , .doOnSubscribe( Action
.doOnError (Consumer
.onErrorComplete ( Predicate
.timeout ( , , Scheduler )
(static) .defer ( Callable supplier) : 공급자 (in study)
(static) .just ( T )
(static) .error(E)
Scheduler & Scheduler.Worker(하나의 thread에서 순차적으로 처리하는 Scheduler)
ExecutorService exec = Executors.newSingleThreadedExecutor();
.newFixedThreadPool(5)//cpu+1
try {
Scheduler scheduler = Schedulers.from(exec);//parallelization에 최적.
.computation();//cpu+1 계산에적합
.io(); //cache도 해줌.cpu+1
.newThread()//간단
Flowable.just(1)
.subscribeOn(scheduler)
.observeOn(Schedulers.computation())
.map(v -> v + 1)
.subscribe(System.out::println); //blockingSubscribe(System.out::println);
} finally {
exec.shutdown();
}
Maybe와 Single의 차이는 complete의 존재여부? (from REF)
Flowable : item emit속도( reactive dataflow)가 조절 가능.
Flowable -> Single<List<T>> : toList() 도 좋음.