Stream()

KKH_94·2023년 8월 29일
0

Reactive_Programming

목록 보기
1/18

비동기성 : 데이터는 비동기적으로 흐르며, 스트림을 통해 연속적으로 전달됩니다. 이는 멀티스레딩과 비동기 작업을 쉽게 다룰 수 있게 해줍니다.

데이터 흐름 처리 : 스트림에 포함된 데이터를 순차적으로 처리하거나, 원하는 조건에 맞게 변형하거나 걸러내는 작업을 수행할 수 있습니다.

백 프레셔(Backpressure) 관리 : 데이터 생산자와 소비자 간의 속도 차이를 관리하여 데이터 오버플로우를 방지하는 메커니즘을 제공합니다.

함수형 프로그래밍 스타일 : 스트림을 다루는 연산은 함수형 프로그래밍 스타일을 적극적으로 활용하여 데이터 변환과 조작을 더 쉽게 할 수 있도록 합니다.


리액티브 프로그래밍의 스트림을 좀 더 자세히 코드와 함께 설명해보겠습니다.

Java에서는 RxJava 라이브러리를 사용하여 리액티브 스트림을 다루는 것이 일반적입니다.

아래는 RxJava를 사용한 간단한 예제 코드입니다. 이 코드는 1부터 10까지의 숫자를 생성하고, 그 중 짝수만 걸러내는 예제입니다.

import io.reactivex.Observable;

public class ReactiveStreamExample {
    public static void main(String[] args) {
        // 1부터 10까지의 숫자를 생성하는 Observable
        Observable<Integer> numbersObservable = Observable.range(1, 10);

        // 짝수만 걸러내는 작업을 수행하는 Observable
        Observable<Integer> evenNumbersObservable = numbersObservable.filter(number -> number % 2 == 0);

        // 결과를 출력
        evenNumbersObservable.subscribe(number -> System.out.println("Even number: " + number));
    }
}

위 코드는 RxJava의 Observable을 이용하여 숫자 스트림을 생성하고, filter() 함수를 사용하여 짝수만 걸러내는 작업을 수행한 후, subscribe()를 통해 결과를 구독하여 출력합니다.

이 예제는 매우 간단한 예시일 뿐이지만, 리액티브 스트림을 사용하면 비동기적으로 데이터를 처리하고 변형하는 작업을 훨씬 복잡하게 처리할 수 있습니다.

RxJava와 다른 리액티브 라이브러리들은 많은 연산자와 함수를 제공하여 데이터 흐름을 다양하게 처리할 수 있는 방법을 제공합니다.

profile
_serendipity

0개의 댓글