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에서 생성한 데이터 흐름이 여기저기 함수를 거치며 처리될 때 동작이 어느 스레드에서 일어나는지 지정할 수 있습니다.
'Rx' 카테고리의 다른 글
RxKotlin- Part 8-2. 필터 연산자 : filter(), take(), skip(), distinct() (0) | 2021.04.29 |
---|---|
RxKotlin- Part 8-1. 변환 연산자 : map(), flatMap(), reduce() (0) | 2021.04.22 |
RxKotlin- Part 8. Reactive 연산자 (0) | 2021.04.15 |
RxKotlin- Part 7. ConnectableObservable Class (0) | 2021.03.09 |
RxKotlin- Part 6. Subject Class (0) | 2021.02.20 |