코딩하는 개굴이

[RxJava] Scheduler란? 본문

안드로이드/RxJava

[RxJava] Scheduler란?

개굴이모자 2023. 3. 5. 21:46
반응형

RxJava 는 비동기를 위해 주로 사용되는데, 그냥 사용한다고 비동기 처리가 수행되는 것이 아니라, 스케줄러를 통해 스레드를 분리해주어야한다.

 

스케줄러란?

Scheduler 는 RxJava 의 코드가 어느 스레드에서 실행될 것인지를 지정하는 역할을 수행한다. 스케줄러의 지정은 subscribeOn, observeOn 연산자를 이용한다.

 

  • subscribeOn: Observable 이 데이터의 흐름을 발생시키고 연산하는 스레드를 지정할 수 있다.
    • 데이터를 발생시키는 쪽에서 흐름을 제어하기 위해 사용
  • observeOn: Observable 이 Observer에게 알림을 보내는 스레드를 지정할 수 있다.
    • 전달받는 쪽에서 데이터를 처리하는 부분을 위해 사용

 

스케줄러의 종류

💡
RxJava 에서는 Computation, IO, Trampoline 의 사용을 권장한다.
  • Schedulers.single(): 단일 스레드를 생성해 게속 재사용한다.
  • Schedulers.computation(): 내부적으로 스레드풀을 생성하여, 스레드 개수만큼 프로세서 개수를 사용한다.
    • CPU에 대응하는 계산용 스케줄러로 IO 작업을 하지 않고 일반적인 계산/연산 작업을 수행할 때 사용된다.
    • 대기 시간 없이 빠르게 연산을 수행하기 위해 사용한다.
  • Schedulers.io(): 필요할때마다 스레드를 계속 생성한다.
    • 파일 입출력 등의 IO 작업을 하거나 네트워크 요청 처리 등의 상황에서 사용되는 스케줄러이다.
    • 필요 할 때마다 스레드를 계속 생성한다. 만일 스레드풀에서 가져올 스레드가 있으면 생성하지 않고 사용한다.
  • Schedulers.trampoline(): 현재 스레드에 무한한 크기의 대기 큐를 생성한다.
  • Schedulers.newThread(): 매번 새로운 스레드를 생성한다.
    • 매번 스레드가 생성되어 비용이 많이 들고 재사용도 되지 않는다.

 

 

 

 

참고 링크


Uploaded by

N2T
반응형

'안드로이드 > RxJava' 카테고리의 다른 글

[RxJava] RxJava 빠르게 훑어보기  (1) 2023.06.18
[RxJava] Subject 란?  (0) 2023.03.05
Comments