스케쥴러(Scheduler)란? RxJava에서의 스케쥴러는 RxJava 비동기 프로그래밍을 위한 쓰레드(Thread) 관리자이다. 즉, 스케쥴러를 이용해서 어떤 쓰레드에서 무엇을 처리할 지에 대해서 제어할 수 있다. 스케쥴러를 이용해서 데이터를 통지하는 쪽과 데이터를 처리하는 쪽 쓰레드를 별도로 지정해서 분리할 수 있다. RxJav...
물리적인 쓰레드와 논리적인 쓰레드의 이해 물리적인 쓰레드는 하드웨어와 관련이 있고, 논리적인 쓰레드는 소프트웨어와 관련이 있다. 물리적인 쓰레드를 이해하기 위해서는 CPU의 코어를 먼저 알아야 한다. 그럼 코어란? CPU의 명령어를 처리하는 반도체 유닛 코어의 갯수가 많으면 명령어를 병렬로(parallel)...
Projector와 Subject란? Processor는 Reactive Streams에서 정의한 Publisher 인터페이스와 Subscriber 인터페이스를 둘 다 상속한 확장 인터페이스이다. public interface Processor<T, R> extends Subscriber<T>, Publisher<...
데이터 집계 연산자 count Observable이 통지한 데이터의 총 개수를 통지한다. 총 개수만 통지하면 되므로 결과값은 Single로 반환한다. 데이터의 총 개수를 통지하는 시점은 완료 통지를 받은 시점이다. /** * count를 이용하여 차량의 총 대수를 계산하는 예제 */ public class Observable...
조건과 불린 연산자 all 통지되는 모든 데이터가 설정한 조건에 맞는지를 판단한다. 결과값을 한번만 통지하면 되기떄문에 true/false 값을 Single로 반환한다. 통지된 데이터가 조건에 맞지 않는다면 이후 데이터는 구독 헤지되어 통지 되지 않는다. /** * all을 이용하여 통지된 모든 데이터가 파라미터로 입력된 조건...
유틸리티 연산자 delay 첫번째 유형 생산자가 데이터를 생성 및 통지를 하지만 설정한 시간만큼 소비자쪽으로의 데이터 전달을 지연시킨다. /** * 통지된 데이터를 소비자 쪽에서 전달 받는 시간을 일정 시간동안 지연 시키는 예제 */ public class ObservableDelayExample01 { public stat...
RxJava try catch로 에러 처리 불가능 public class CanNotUserTryCatchExample { public static void main(String[] args) { try { Observable.just(2) .map(num -> nu...
데이터 결합 연산자 merge 다수의 Observable에서 통지된 데이터를 받아서 다시 하나의 Flowable/Observable로 통지한다. 통지 시점이 빠른 Observable의 데이터부터 순차적으로 통지되고 통지 시점이 같을 경우에는 merge() 함수의 파라미터로 먼저 지정된 Observable의 데이터부터 통지된다. ...
데이터 변환 연산자 groupBy 하나의 Observable을 여러개의 새로운 GroupedByObservable로 만든다. 원본 Observable의 데이터를 그룹별로 묶는다기보다는 각각의 데이터들이 그룹에 해당하는 Key를 가지게 된다. GroupedByObservable은 getKey()를 통해 구분된 그룹을 알 수 있게 해준다....
데이터 변환 연산자 map 원본 Observable에서 통지하는 데이터를 원하는 값으로 변환 후 통지한다. 변환 전, 후 데이터 타입은 달라도 상관없다. null을 반환하면 NullpointException이 발생하므로 null이 아닌 데이터 하나를 반드시 반환해야 한다. /** * Observable이 통지한 항목에 함수를 ...