ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [RxJava] Scheduler
    ReactiveX 2021. 5. 1. 10:49

    스케줄러 개념

    스케줄러는 Observable만큼이나 중요한 RxJava의 핵심요소이다.

    • Observable 연산자 체인에 멀티스레딩을 적용하고 싶다면, 특정 스케줄러를 사용해서 연산자(또는 특정 Observable)를 실행하면 된다.
    • SubscribeOn 연산자는 다른 스케줄러를 지정해서 Observable이 처리해야 할 연산자들을 실행시킨다.
    • ObserveOn 연산자는 Observable이 옵저버에게 알림을 보낼때 사용할 스케줄러를 명시한다.
    • 스케줄러를 별로도 지정하지 않으면 main 스레드에서 동작을 실행한다.

    아래 그림이 보여주듯, SubscribeOn 연산자는 Observable이 연산을 위해 사용할 스레드를 지정하며, 연산자 체인 중 아무 곳에서 호출해도 문제되지 않는다. 하지만, ObserveOn 연산자는 연산자 체인 중 Observable이 사용할 스레드가 호출 체인 중 어느 시점에서 할당되는지에 따라 그 후에 호출되는 연산자는 영향을 받는다.

     

    출저 http://reactivex.io/documentation/ko/scheduler.html

     

    스케줄러 종류 

    RxJava에서는 계산 스케줄러, I/O 스케줄러, 트램펄린 스케줄러는 추천하며 뉴스레드 스케줄러는 특수한 상황에서 적용하길 권장한다. 

    1. Schedulers.newThread( )

      - 요청을 받을때마다 새로운 스레드를 생성한다.

    2. Schedulers.computation()

     - 벤트-루프와 콜백 처리 같은 연산 중심적인 작업을 위해 사용된다. 

     - CPU 개수만큼 스레드 생성

     - RxComputationThreadPool라는 별도의 스레드 풀에서 돌아간다. 

    3. Schedulers.io()

     - 네트워크 요청을 처리하거나 각종 입출력 작업을 실행하기 위한 스케줄러
     - 필요할 때마다 스레드를 계속 생성
    4. Schedulers.immediate()

     - 현재 스레드에서 즉시 작업을 수행한다.

    5. Schedulers.trampoline()

     - 큐에 있는 일이 끝나면 이어서 현재 스레드에서 수행하는 스케쥴러

     

    References

    • https://reactivex.io/
    • 유동환, 박정준, 리액티브 프로그래밍 기초부터 안드로이드까지 한번에, 한빛미디어 

    'ReactiveX' 카테고리의 다른 글

    Subject  (0) 2021.05.15
    RxAndroid  (0) 2021.05.02
    [RxJava] Single, Maybe  (0) 2021.05.01
    [RxJava] Operators(연산자)  (0) 2021.04.30
    [RxJava] Observable  (0) 2021.04.29
Designed by Tistory.