एक प्रकाशक इंटरफ़ेस अनुक्रमित तत्वों की एक असीमित संख्या का प्रदाता है, जो उन्हें अपने ग्राहक (सदस्यों) से प्राप्त मांग के अनुसार प्रकाशित करता है। . कॉल के जवाब में Publisher.subscribe(Subscriber) , सदस्य . पर विधियों के लिए संभावित आमंत्रण अनुक्रम . इसका मतलब है कि ऑनसब्सक्राइब () विधि, उसके बाद onNext() . की असीमित संख्या विधियाँ (जैसा कि सदस्य द्वारा अनुरोध किया गया है ) उसके बाद ऑनएरर () विधि, यदि कोई विफलता है या कोई पूर्ण() . है विधि जब सदस्यता . तक कोई और तत्व उपलब्ध नहीं है रद्द नहीं किया गया है।
सिंटैक्स
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