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

Core Interfaces ของ Reactive Streams ใน Java 9 มีอะไรบ้าง

Java 9 นำเสนอ Reactive Streams ภายใต้ package java.util.concurrent.Flow รองรับ framework publish-subscribe ที่ interoperable ประมวลผล asynchronous stream of data ข้าม asynchronous boundary (ส่ง elements เข้า thread หรือ thread pool อื่น) ด้านรับไม่ถูกบังคับให้ buffer ข้อมูลจำนวนมาก จึงไม่เกิด buffer overflow

4 Core Interfaces ของ Flow API

  • Publisher - ผู้เผยแพร่ข้อมูล
  • Subscriber - ผู้สมัครรับข้อมูล
  • Subscription - ลิงก์ระหว่าง Publisher และ Subscriber
  • Processor - ตัวประมวลผลแปลงสตรีม (implements Publisher และ Subscriber)

ไวยากรณ์ของ Interfaces

@FunctionalInterface
public static interface Publisher<T> {
    public void subscribe(Subscriber<? super T> subscriber);
}

public static interface Subscriber<T> {
    public void onSubscribe(Subscription subscription);
    public void onNext(T item);
    public void onError(Throwable throwable);
    public void onComplete();
}

public static interface Subscription {
    public void request(long n);
    public void cancel();
}

public static interface Processor<T, R> extends Subscriber<T>, Publisher<R> {
}

ความสัมพันธ์และการทำงาน

Interfaceเมธอดหลักหน้าที่
Publishersubscribe()ลงทะเบียน Subscriber เริ่มสตรีม
SubscriberonSubscribe()รับ Subscription เรียก request() ขอข้อมูล
SubscriberonNext()รับข้อมูล item ถัดไป
SubscriberonError()รับข้อผิดพลาด
SubscriberonComplete()สตรีมจบสมบูรณ์
Subscriptionrequest(n)ขอ n items (backpressure)
Subscriptioncancel()ยกเลิก subscription
Processor(ทั้ง Publisher และ Subscriber)แปลงสตรีม input เป็น output

หลักการ Reactive Streams

  1. Backpressure: Subscriber ควบคุมอัตราการรับด้วย request(n)
  2. Non-blocking: การทำงานแบบ asynchronous
  3. Interoperability: ระหว่าง libraries ต่างๆ ที่ implement Flow API

Flow API เป็นมาตรฐานพื้นฐาน ไลบรารีอย่าง RxJava, Reactor, Akka Streams สามารถทำงานร่วมกันได้