Scheduler

multi-threading을 옵저버블 연산자 체인에 도입하려는 경우 해당 연산자(또는 특정 옵저버블)가 특정 스케줄러에서 작동하도록 지시하면 된다.

일부 ReactiveX 옵저버블 연산자에는 스케줄러를 매개변수로 사용하는 변형이 있다. 이는 연산자가 특정 스케줄러에서 작업의 일부 또는 전부를 수행하도록 지시한다.

기본적으로 옵저버블과 옵저버블에 적용하는 일련의 연산자는 작업을 수행하고, Subscribe 메서드가 호출되는 동일한 스레드에서 옵저버에게 알림을 보낼 것이다. SubscribeOn 연산자는 옵저버블이 작동해야 하는 다른 스케줄러를 지정하여 이 동작을 변경한다. ObserveOn 연산자는 옵저버블이 옵저버에게 알림을 보내는 데 사용할 다른 스케줄러를 지정한다.

아래 그림에서 볼 수 있듯이 SubscribeOn 연산자는 해당 연산자가 호출되는 연산자 체인의 어느 지점에 상관없이 옵저버블이 연산을 시작할 스레드를 지정한다. 반면, ObserveOn은 옵저버블이 해당 연산자가 나타나는 아래에서 사용할 스레드에 영향을 미친다. 이러한 이유로 특정 연산자가 작동하는 스레드를 변경하기 위해 옵저버블 연산자 체인 동안 다양한 지점에서 ObserveOn을 여러 번 호출할 수 있다.

schedulers_Marble.jpg