본문 바로가기
카테고리 없음

RxJava - 스케줄러(Scheduler)란?

by 너츠너츠 2023. 5. 9.

스케줄러(Scheduler)란 무엇일까?

  • RxJava 비동기 프로그래밍을 위한 쓰레드(Thread) 관리자, 즉 스케줄러를 이용해서 어떤 쓰레드에서 무엇을 처리할지 제어할 수 있다.
  • RxJava의 스케줄러를 통해 쓰레드를 위한 코드의 간결성 및 쓰레드 관리의 복작합을 줄일 수 있다.
  • RxJava에서 스케줄러를 지정하기 위해서 subscribeOn(), observeOn() 유틸리티 연산자를 사용
  • 생산자 쪽의 데이터 흐름을 제어하기 위해서는 subscribeOn() 연산자를 사용한다.
  • 소비자쪽에서 전달받은 데이터 처리를 제어하기 위해서는 observeOn() 연산자를 사용한다.
  • subscribeOn(), observeOn() 연산자는 각각 파라미터로 Scheduler를 지정해야 한다.

 

Scheduler의 종류

Schedulers.io()

- I/O 처리 작업을 할 때 사용하는 스케줄러

- 네트워크 요청 처리, 각종 입출력 작업, 데이터베이스 쿼리 등에 사용

- 쓰레드 풀에서 쓰레드를 가져오거나 가져올 쓰레드가 없으면 새로운 쓰레드를 생성한다.

 

Schedulers.computation()

- 논리적인 연산 처리 시 사용

- CPU 코어의 물리적 쓰레드 수를 넘지 않는 범위에서 쓰레드들을 생성한다.

- 대기 시간 없이 빠르게 계산 작업을 수행하기 위해 사용

 

Schedulers.newThread()

- 요청 시마다 매번 새로운 쓰레드를 생성

- 매번 생성되면 쓰레드 비용도 많이 들고, 재사용도 되지 않는다.

 

Schedulers.trampoline()

- 현재 실행되고 있는 쓰레드에 큐(Queue)를 생성하여 처리할 작업들을 큐에 넣고 순서대로 처리

- FIFO (First in First Out)

 

Schedulers.single()

- 단일 쓰레드를 생성하여 처리 작업을 진행

- 여러번 구독해도 공통으로 사용

 

Schedulers.from(executer)

- Executer를 사용해서 생성한 쓰레드를 사용

- RxJava의 Scheduler와 Executor의 동작 방식이 다르므로 자주 사용X

 

 

<참고>

https://yunzai.dev/posts/RxJava_%EC%8A%A4%EC%BC%80%EC%A5%B4%EB%9F%AC%EB%9E%80_%EC%8A%A4%EC%BC%80%EC%A5%B4%EB%9F%AC%EC%9D%98_%EC%A2%85%EB%A5%98(1)/

반응형

댓글