Flow API ইমপ্লিমেন্টেশন
Flow API (java.util.concurrent.Flow) জাভা ৯-এ যোগ করা হয়েছে। এটি Publisher এবং Subscriber ইন্টারফেসের পারস্পরিক קרিয়া বোঝার সাহায্য করে।
Flow API হলো Publisher, Subscriber, Subscription, এবং Processor ইন্টারফেসের সমষ্টি, যা রিয়েক্টিভ স্ট্রিম স্পেসিফিকেশনের উপর ভিত্তি করে তৈরি।
উদাহরণ: Publisher-Subscriber দিয়ে Flow API ইমপ্লিমেন্টেশন
import java.util.concurrent.Flow.Publisher;
import java.util.concurrent.Flow.Subscriber;
import java.util.concurrent.Flow.Subscription;
public class FlowAPITest {
public static void main(String args[]) {
Publisher<Integer> publisherSync = new Publisher<Integer>() {
// Create publisher
@Override
public void subscribe(Subscriber<? super Integer> subscriber) {
for(int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + " | Publishing = " + i);
subscriber.onNext(i);
}
subscriber.onComplete();
}
};
Subscriber<Integer> subscriberSync = new Subscriber<Integer>() {
// Create subscriber
@Override
public void onSubscribe(Subscription subscription) {
}
@Override
public void onNext(Integer item) {
System.out.println(Thread.currentThread().getName() + " | Received = " + item);
try {
Thread.sleep(100);
} catch(InterruptedException e) {
e.printStackTrace();
}
}
@Override
public void onError(Throwable throwable) {
}
@Override
public void onComplete() {
}
};
publisherSync.subscribe(subscriberSync);
}
}
আউটপুট
main | Publishing = 0 main | Received = 0 main | Publishing = 1 main | Received = 1 main | Publishing = 2 main | Received = 2 main | Publishing = 3 main | Received = 3 main | Publishing = 4 main | Received = 4 main | Publishing = 5 main | Received = 5 main | Publishing = 6 main | Received = 6 main | Publishing = 7 main | Received = 7 main | Publishing = 8 main | Received = 8 main | Publishing = 9 main | Received = 9