흐름 API Java 9에서는 반응 스트림 에 해당합니다. 사실상의 표준인 사양. 여기에는 비동기 발행 및 구독의 핵심을 포착하는 최소한의 인터페이스 세트가 포함되어 있습니다.
아래는 Flow API의 주요 인터페이스입니다. :
1) 흐름 게시자: 구독자가 소비할 항목을 생성하며 subscribe(Subscriber) 메서드만 포함합니다. , 목적이 분명해야 합니다.
구문
void subscribe(Flow.Subscriber<? super T> subscriber)
2) 흐름 구독자: onNext(T) 메서드를 통해 항목을 받기 위해 게시자(보통 하나만)를 구독합니다. ), 오류 메시지(onError(Throwable) ) 또는 더 이상 항목이 필요하지 않다는 신호(onComplete() ). 이러한 일이 발생하기 전에 게시자는 onSubscription(Subscription) 을 호출합니다. 방법.
구문
void onSubscribe(Flow.Subscription subscription) void onNext(T item) void onError(Throwable throwable) void onComplete()
3) 흐름 구독: 단일 게시자 간의 연결 및 단일 구독자 . 구독자는 이를 사용하여 더 많은 항목을 요청할 수 있습니다(request(long) ) 또는 연결 끊기(cancel() ).
구문
void request(long n) void cancel()
Flow API 실행 단계:
- 먼저 게시자 를 만들어야 합니다. 및 구독자 .
- 게시자::구독으로 구독자를 구독합니다. .
- 게시자 구독 생성 Subscriber::onSubscription 호출 구독자가 구독을 저장할 수 있도록 합니다.
- 어떤 시점에서 구독자는 Subscription::을 호출합니다. 요청 여러 항목을 요청합니다.
- 게시자는 Subscriber::onNext를 호출하여 구독자에게 항목을 전달하기 시작합니다. . 요청한 항목 수를 초과하여 게시하지 않습니다.
- 게시자가 문제에 직면하여 Subscriber::onComplete 를 호출할 수 있습니다. 또는 구독자::onError , 각각.
- 구독자는 계속해서 때때로 더 많은 항목을 요청하거나 구독::취소를 호출하여 연결을 끊을 수 있습니다. .