[java] RxJava와 멀티스레드 환경
소개
RxJava는 리액티브 프로그래밍을 위한 자바 라이브러리입니다. 멀티스레드 환경에서 어떻게 사용되는지에 대해 알아보겠습니다.
스케줄러 사용하기
RxJava에서 멀티스레드 환경을 처리하기 위해 스케줄러를 사용할 수 있습니다. 스케줄러는 작업을 실행할 스레드를 관리하고 제어하는 역할을 합니다.
일반적으로 사용되는 스케줄러는 다음과 같습니다:
Schedulers.io()
: I/O 작업을 실행하기 위한 스케줄러입니다. 네트워크 요청, 파일 입출력 등의 작업을 처리할 때 사용됩니다.Schedulers.computation()
: CPU 연산 작업을 실행하기 위한 스케줄러입니다. 복잡한 계산 작업을 처리할 때 사용됩니다.Schedulers.newThread()
: 각각의 작업에 새로운 스레드를 생성하여 실행하는 스케줄러입니다.AndroidSchedulers.mainThread()
: 안드로이드 UI 스레드에서 작업을 실행하기 위한 스케줄러입니다.
예제 코드
Observable.just("Hello")
.subscribeOn(Schedulers.io()) // I/O 작업을 처리하기 위해 io 스케줄러를 사용합니다
.observeOn(AndroidSchedulers.mainThread()) // 결과를 UI 스레드에서 처리하기 위해 main 스케줄러를 사용합니다
.subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
// UI 업데이트 등의 작업을 수행합니다.
textView.setText(s);
}
});
위의 코드는 “Hello”라는 문자열을 생성하고, I/O 작업을 처리할 스케줄러를 지정한 뒤, 결과를 UI 스레드에서 처리하는 스케줄러로 전환하여 textView
에 텍스트를 설정하는 예제입니다.