반응형
공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅부터는 스케줄러에 대해서 공부합니다.
이전까지의 포스팅에서 예제들의 공통점은 대부분 main 스레드에서
동작한다는 것이었는데요.
실무에서 사용할 때는 요구사항에 맞게 비동기로 동작할 수 있도록
바꿔야겠죠?
이 때 스케줄러를 사용합니다.
스케줄러
스레드를 지정할 수 있게 해줍니다.
예제)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | package rx.java.chapter05; import io.reactivex.Observable; import io.reactivex.schedulers.Schedulers; public class SchedulerEx { public static void main(String[] args) { String[] names = {"Thomas", "Tommy", "Tom"}; Observable<String> src = Observable.fromArray(names) .doOnNext(str -> System.out.println(Thread.currentThread().getName() + " =>" + str)) .subscribeOn(Schedulers.newThread()) .observeOn(Schedulers.newThread()); src.subscribe(str -> System.out.println(Thread.currentThread().getName() + " =>" + str)); try { Thread.sleep(1000); } catch (Exception e) { // TODO: handle exception } } } | cs |
예제를 보면 이전까지 보지못했던 subscribeOn 과 observeOn이 보입니다.
subscribeOn()
구독자가 Observable에 subscribe() 함수를 호출해 구독할 때
실행되는 스레드를 지정합니다.
ObserveOn()
Observable에서 생성한 데이터 흐름이 여러 함수를 거치며 처리될 때
동작이 어느 스레드에서 일어나는지 지정함.
위에서 두 함수에 사용된 인자 Schedulers.newThread() 는
새로운 스레드를 생성한다는 의미를 가집니다.
위에제를 돌려보면 doOnNext() 와 subscribe()가 각각 다른 스레드에서
실행됨을 알 수 있습니다.
만약 observeOn()을 주석처리하면 모두 같은 스레드에서 실행됩니다.
다음 포스팅에서는 스케줄러의 종류와 사용방법에 대해 공부합니다.
이상입니다.
반응형