Java 9 ได้แนะนำ รีแอกทีฟสตรีม ภายใต้ java.util.concurrent.Flow แพ็คเกจที่รองรับ เผยแพร่-สมัครสมาชิก . ที่ทำงานร่วมกันได้ กรอบ. มันประมวลผลสตรีมข้อมูลแบบอะซิงโครนัสข้ามขอบเขตแบบอะซิงโครนัส (ส่งองค์ประกอบไปยังเธรดอื่นหรือเธรดพูล) และฝ่ายรับจะไม่ถูกบังคับให้บัฟเฟอร์ปริมาณข้อมูลตามอำเภอใจ ดังนั้นบัฟเฟอร์โอเวอร์โฟลว์จะไม่เกิดขึ้น
โฟลว์ API มีอินเทอร์เฟซหลักสี่ส่วนที่เกี่ยวข้องกัน:ผู้เผยแพร่ , สมาชิก , สมัครสมาชิก และ โปรเซสเซอร์ .
ไวยากรณ์
@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> {
} อินเทอร์เฟซทั้งสี่นี้:Flow.Publisher , Flow.Processo r, Flow.Subscriber, และไหล สมัครสมาชิก ที่เกี่ยวข้องกับข้อกำหนดรีแอกทีฟสตรีม ผู้เผยแพร่ อินเทอร์เฟซมี subscribe() วิธีการ สมัครสมาชิก มี ยกเลิก() และ request() วิธีการและ สมาชิก มี onSubscribe() , onNext() , onError() และ onComplete() วิธีการ โปรเซสเซอร์ อินเทอร์เฟซใช้วิธีการทั้งหมดของ Flow สำนักพิมพ์ และ Flow.Subscriber อินเทอร์เฟซ