Flow API (java.util.concurrent.Flow) जावा 9 में पेश किया गया है। यह समझने में मदद करता है कि पब्लिशर और सब्सक्राइबर इंटरफेस वांछित संचालन करने के लिए किन विभिन्न तरीकों से इंटरैक्ट करते हैं।
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 publisherSync = new Publisher () {
// 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 subscriberSync = new Subscriber () {
// 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