Flow API ใน Java 9 สอดคล้องกับ Reactive Streams ข้อกำหนดซึ่งเป็นมาตรฐาน defacto ประกอบด้วยชุดอินเทอร์เฟซขั้นต่ำที่ดึงดูดหัวใจของการเผยแพร่และการสมัครสมาชิกแบบอะซิงโครนัส
ด้านล่างเป็นส่วนติดต่อหลักของ Flow API :
1) ไหล ผู้จัดพิมพ์: มันผลิตรายการสำหรับสมาชิกที่จะบริโภคและมีวิธีการเท่านั้น:สมัครสมาชิก(สมาชิก) ซึ่งจุดประสงค์ควรจะชัดเจน
ไวยากรณ์
void subscribe(Flow.Subscriber<? super T> subscriber)
2) ไหล สมาชิก: มันสมัครรับข้อมูลจากผู้เผยแพร่ (โดยปกติเพียงคนเดียว) เพื่อรับรายการ (ผ่านวิธีการ onNext(T) ) ข้อความแสดงข้อผิดพลาด (onError(Throwable) ) หรือสัญญาณว่าไม่มีรายการใดที่จะคาดหวังอีกต่อไป (onComplete() ). ก่อนที่สิ่งเหล่านั้นจะเกิดขึ้น ผู้จัดพิมพ์จะเรียก onSubscription(Subscription) วิธีการ
ไวยากรณ์
void onSubscribe(Flow.Subscription subscription) void onNext(T item) void onError(Throwable throwable) void onComplete()
3) ไหล สมัครสมาชิก: ความเชื่อมโยงระหว่าง ผู้เผยแพร่ และ สมาชิก . เพียงคนเดียว . สมาชิกสามารถใช้เพื่อขอรายการเพิ่มเติม (ขอ (ยาว) ) หรือตัดการเชื่อมต่อ (ยกเลิก() )
ไวยากรณ์
void request(long n) void cancel()
ขั้นตอนการดำเนินการสำหรับ Flow API:
- ขั้นแรก เราต้องสร้าง ผู้เผยแพร่ และ สมาชิก .
- สมัครสมาชิกกับ Publisher::สมัครสมาชิก .
- ผู้เผยแพร่โฆษณา สร้าง สมัครสมาชิก และเรียก Subscriber::onSubscription ด้วยเพื่อให้สมาชิกสามารถจัดเก็บการสมัครสมาชิกได้
- เมื่อถึงจุดหนึ่ง สมาชิกจะโทรหา การสมัครรับข้อมูล:: ขอ เพื่อขอรายการต่างๆ
- ผู้จัดพิมพ์เริ่มมอบสิ่งของให้กับสมาชิกโดยโทรไปที่ Subscriber::onNext . ไม่เคยเผยแพร่เกินจำนวนที่ขอ
- บางครั้งผู้จัดพิมพ์อาจประสบปัญหาและโทรหา Subscriber::onComplete หรือ Subscriber::onError ตามลำดับ
- สมาชิกอาจยังคงขอรายการเพิ่มเติมเป็นระยะๆ หรือตัดการเชื่อมต่อโดยโทร สมัครสมาชิก::ยกเลิก .