Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีนำ Flow API ไปใช้ด้วย Publisher-Subscriber ใน Java 9

Flow API (java.util.concurrent.Flow) ถูกแนะนำใน Java 9 ช่วยเข้าใจวิธีต่างๆ ที่ Publisher และ Subscriber อินเทอร์เฟซโต้ตอบเพื่อทำงานที่ต้องการ

Flow API ประกอบด้วยอินเทอร์เฟซ Publisher, Subscriber, Subscription, และ Processor ซึ่งพัฒนาตาม reactive stream specification

ในตัวอย่างด้านล่าง เราจะนำ Flow API ไปใช้ด้วย Publisher-Subscriber interfaces:

ตัวอย่าง

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 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