A প্রকাশক ৷ ইন্টারফেস হল একটি সীমাহীন সংখ্যক অনুক্রমযুক্ত উপাদানগুলির একটি প্রদানকারী, তাদের গ্রাহক(গুলি) থেকে প্রাপ্ত চাহিদা অনুযায়ী প্রকাশ করে . 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