জাভা 9 ৷ প্রতিক্রিয়াশীল স্ট্রীম তৈরি করতে সমর্থন করে কয়েকটি ইন্টারফেস প্রবর্তন করে:প্রকাশক , সাবস্ক্রাইবার , সদস্যতা , এবং জমা প্রকাশক ক্লাস যা প্রকাশক বাস্তবায়ন করে ইন্টারফেস. প্রতিটি ইন্টারফেস প্রতিক্রিয়াশীল নীতির সাথে সঙ্গতিপূর্ণ একটি ভিন্ন ভূমিকা পালন করতে পারে স্ট্রিমগুলি৷ .
আমরা সাবস্ক্রাইবার ব্যবহার করতে পারি৷ একটি প্রকাশক দ্বারা প্রকাশিত ডেটাতে সদস্যতা নেওয়ার ইন্টারফেস৷ . আমাদের সাবস্ক্রাইবার বাস্তবায়ন করতে হবে ইন্টারফেস এবং বিমূর্ত পদ্ধতির জন্য একটি বাস্তবায়ন প্রদান করে।
ফ্লো। সাবস্ক্রাইবার ইন্টারফেস পদ্ধতি:
- oncomplete(): যখন প্রকাশক বস্তুটি তার ভূমিকা সম্পূর্ণ করে তখন এই পদ্ধতিটি বলা হয়৷ ৷
- onError(): যখন প্রকাশকের মধ্যে কিছু ভুল হয়ে যায় এবং গ্রাহককে অবহিত করা হয় তখন এই পদ্ধতিটি বলা হয়৷ ৷
- Next(): যখনই প্রকাশকের কাছে সমস্ত গ্রাহকদের অবহিত করার জন্য নতুন তথ্য থাকে তখন এই পদ্ধতিটি বলা হয়৷ ৷
- অনসাবস্ক্রাইব(): যখন প্রকাশক গ্রাহক যোগ করে তখন এই পদ্ধতিটি বলা হয়৷ ৷
উদাহরণ
import java.util.concurrent.Flow;
import java.util.concurrent.SubmissionPublisher;
import java.util.stream.IntStream;
public class SubscriberImplTest {
public static class Subscriber implements Flow.Subscriber<Integer> {
private Flow.Subscription subscription;
private boolean isDone;
@Override
public void onSubscribe(Flow.Subscription subscription) {
System.out.println("Subscribed");
this.subscription = subscription;
this.subscription.request(1);
}
@Override
public void onNext(Integer item) {
System.out.println("Processing " + item);
this.subscription.request(1);
}
@Override
public void onError(Throwable throwable) {
throwable.printStackTrace();
}
@Override
public void onComplete() {
System.out.println("Processing done");
isDone = true;
}
}
public static void main(String args[]) throws InterruptedException {
SubmissionPublisher<Integer> publisher = new SubmissionPublisher<>();
Subscriber subscriber = new Subscriber();
publisher.subscribe(subscriber);
IntStream intData = IntStream.rangeClosed(1, 10);
intData.forEach(publisher::submit);
publisher.close();
while(!subscriber.isDone) {
Thread.sleep(10);
}
System.out.println("Done");
}
} আউটপুট
Subscribed Processing 1 Processing 2 Processing 3 Processing 4 Processing 5 Processing 6 Processing 7 Processing 8 Processing 9 Processing 10 Processing done Done