PHpullh
학습 라이브러리/Java/리액티브 프로그래밍 소개

JAVA · 함수형/Stream

리액티브 프로그래밍 소개

Java 9의 Flow API로 리액티브 스트림의 기본 개념을 이해합니다.

함수형/Stream고급reactiveFlowPublisherSubscriber

핵심 설명

Java 9의 Flow API로 리액티브 스트림의 기본 개념을 이해합니다.

Java code

import java.util.concurrent.*;
import java.util.concurrent.Flow.*;

public class ReactiveIntro {
    // 간단한 Publisher
    static class SimplePublisher implements Publisher<String> {
        @Override
        public void subscribe(Subscriber<? super String> subscriber) {
            subscriber.onSubscribe(new Subscription() {
                private boolean cancelled = false;

                @Override
                public void request(long n) {
                    if (cancelled) return;
                    for (int i = 0; i < n && !cancelled; i++) {
                        subscriber.onNext("데이터-" + i);
                    }
                    if (!cancelled) subscriber.onComplete();
                }

                @Override
                public void cancel() { cancelled = true; }
            });
        }
    }

    // 간단한 Subscriber
    static class SimpleSubscriber implements Subscriber<String> {
        private Subscription subscription;

        @Override public void onSubscribe(Subscription s) {
            this.subscription = s;
            s.request(3); // 3개 요청
        }
        @Override public void onNext(String item) {
            System.out.println("수신: " + item);
        }
        @Override public void onError(Throwable t) {
            System.err.println("에러: " + t.getMessage());
        }
        @Override public void onComplete() {
            System.out.println("완료!");
        }
    }

    public static void main(String[] args) {
        new SimplePublisher().subscribe(new SimpleSubscriber());
    }
}

학습 팁

Flow API는 리액티브 스트림의 표준 인터페이스입니다. 실제 구현은 Project Reactor(Spring WebFlux)나 RxJava를 사용하세요.

주의할 점

request(n)으로 배압(backpressure)을 제어합니다. 무한히 요청하면 메모리 부족이 발생할 수 있습니다.

자주 묻는 질문

리액티브 프로그래밍 소개란 무엇인가요?

Java 9의 Flow API 로 리액티브 스트림의 기본 개념을 이해합니다.

리액티브 프로그래밍 소개 학습 시 주의할 점은 무엇인가요?

request(n) 으로 배압(backpressure)을 제어합니다. 무한히 요청하면 메모리 부족이 발생할 수 있습니다.