본문 바로가기

Rx

RxKotlin- Part 9. 스케줄러

728x90

스케줄러

스케줄러는 Thread를 지정할 수 있게 해줍니다.

스케줄러를 활용하면 데이터 흐름이 발생하는 Thread, 처리된 결과를 구독자에게 전달하는 Thread를 분리할 수 있습니다.

스케줄러를 별도로 지정하지 않으면 Main Thread에서 동작을 실행합니다.

 

스케줄러의 종류
뉴 스레드 스케줄러 새로운 스레드를 생성합니다. Schedulers.newThread()
RxJava에서 계산 스케줄러, IO 스케줄러를 제공하기 때문에 상황에 맞게 사용하는 것이 좋다고 합니다.
계산 스케줄러 CPU에 대응하는 계산용 스케줄러로, 내부적으로 스레드 풀을 생성하며, 스레드 개수는 기본적으로 프로세서 개수와 동일합니다. Schedulers.computation()
IO 스케줄러 계산 스케줄러와 다르게 필요 시 스레드를 생성하며, 네트워크상의 요청 또는 각종 입, 출력 작업을 위한 스케줄러지만, 결과를 얻기까지의 대기시간이 긴 편입니다. Schedulers.io()
트램펄린 스케줄러 스레드 생성없이 현재 스레드에 무한한 크기의 대기 Queue를 생성하는 스케줄러 입니다. Schedulers.trampoline()
싱글 스레드 스케줄러 RxJava 내부에서 단일 스레드를 별도로 생성해 구독 작업을 처리하며, 여러 번의 구독 요청이 와도 공통으로 사용합니다. Schedulers.single()

 

리액티브 프로그래밍은 서버와 연동하는 비동기 프로그래밍 작성에 좋습니다.

  • 순수한 비즈니스 로직과 비동기 동작을 위한 스레드를 구별할 수 있습니다.
  • 로직과 예외 처리를 깔끔하게 분리할 수 있습니다.

subscribeOn() : 구독자가 Observable에 subscribe() 함수를 호출해 구독할 때 실행되는 스레드를 지정합니다. 

 

observeOn() : Observable에서 생성한 데이터 흐름이 여기저기 함수를 거치며 처리될 때 동작이 어느 스레드에서 일어나는지 지정할 수 있습니다.