게시자 인터페이스는 구독자로부터 받은 요구에 따라 게시하는 무한한 수의 순차 요소를 제공합니다. . Publisher.subscribe(Subscriber) 호출에 대한 응답으로 , 구독자의 메소드에 대한 가능한 호출 시퀀스 . onSubscribe() 메소드 다음에 무한한 수의 onNext() 방법(구독자가 요청한 대로 ) 다음에 onError() 메소드, 실패 또는 onComplete()가 있는 경우 구독 동안 사용할 수 있는 요소가 더 이상 없을 때의 방법 취소되지 않습니다.
구문
public interface Publisher<T> { public void subscribe(Subscriber<? super T> s); }
예시
import java.util.concurrent.*; import java.util.*; import java.util.stream.*; class SimplePublisher implements Flow.Publisher<Integer> { private final Iterator<Integer> iterator; SimplePublisher(int count) { this.iterator = IntStream.rangeClosed(1, count).iterator(); } @Override public void subscribe(Flow.Subscriber<? super Integer> subscriber) { iterator.forEachRemaining(subscriber::onNext); subscriber.onComplete(); } } public class SimplePublisherImplTest { public static void main(String args[]) { new SimplePublisher(10).subscribe(new Flow.Subscriber<>() { @Override public void onSubscribe(Flow.Subscription subscription) { } @Override public void onNext(Integer item) { System.out.println("item = [" + item + "]"); } @Override public void onError(Throwable throwable) { } @Override public void onComplete() { System.out.println("complete"); } }); } }
출력
item = [1] item = [2] item = [3] item = [4] item = [5] item = [6] item = [7] item = [8] item = [9] item = [10] complete