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)을 제어합니다. 무한히 요청하면 메모리 부족이 발생할 수 있습니다.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.