RxJava

network개발 2017. 7. 21. 11:48

(RxJava는  비동기multi-thread 주목적이므로 network개발로 분류)  기초:REF


javadoc 



데이타\처리

CompletableMaybeSingleObservable

Subject(외부에서 데이타주입가능)

NothingO
OneOOOO
MoreOO
UnlimitedOO


<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() 도 좋음.

Posted by yongary
,