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 อินเทอร์เฟซ