6.1 วัตถุปฏิบัติการ
ดังนั้นเราจึงไปถึงส่วนที่ใหญ่ที่สุดของแพ็คเกจ โดยจะอธิบายอินเทอร์เฟซสำหรับการเรียกใช้งานแบบอะซิงโครนัสด้วยความสามารถในการรับผลลัพธ์ผ่านอินเทอร์เฟซ Future และ Callable ตลอดจนบริการและโรงงานสำหรับสร้างเธรดพูล: ThreadPoolExecutor, ScheduledPoolExecutor, ForkJoinPool
เพื่อความเข้าใจที่ดีขึ้น เรามาแยกส่วนอินเทอร์เฟซและคลาสกันเล็กน้อย

6.2 การทำให้เป็นจริงของวัตถุปฏิบัติการ
Future<V>
เป็นอินเทอร์เฟซที่ยอดเยี่ยมสำหรับการรับผลลัพธ์ของการดำเนินการแบบอะซิงโครนัส วิธีการหลักที่นี่คือวิธีการรับ ซึ่งจะบล็อกเธรดปัจจุบัน (โดยมีหรือไม่มีการหมดเวลา) จนกว่าการดำเนินการแบบอะซิงโครนัสบนเธรดอื่นจะเสร็จสิ้น นอกจากนี้ยังมีวิธีการเพิ่มเติมสำหรับการยกเลิกการดำเนินการและตรวจสอบสถานะปัจจุบัน คลาส FutureTask มักใช้เป็นการดำเนินการ
RunnableFuture<V>
- หาก Future เป็นอินเทอร์เฟซสำหรับ Client API แสดงว่ามีการใช้อินเทอร์เฟซ RunnableFuture เพื่อเริ่มส่วนอะซิงโครนัสแล้ว การรันเมธอด run() สำเร็จจะสิ้นสุดการดำเนินการแบบอะซิงโครนัสและอนุญาตให้ดึงผลลัพธ์ผ่านเมธอด get
Callable<V>
- อะนาล็อกเพิ่มเติมของอินเทอร์เฟซ Runnable สำหรับการทำงานแบบอะซิงโครนัส อนุญาตให้คุณส่งคืนค่าที่พิมพ์และส่งข้อยกเว้นที่ตรวจสอบแล้ว แม้ว่าอินเทอร์เฟซนี้ไม่มีเมธอด run() แต่คลาส java.util.concurrent จำนวนมากก็รองรับพร้อมกับ Runnable
FutureTask<V>
— การใช้งานอินเทอร์เฟซ Future/RunnableFuture การดำเนินการแบบอะซิงโครนัสถูกนำไปเป็นอินพุตให้กับหนึ่งในคอนสตรัคเตอร์ในรูปแบบของออบเจกต์ที่รันได้หรือเรียกได้ คลาส FutureTask นั้นได้รับการออกแบบให้เปิดใช้งานในเธรดของผู้ปฏิบัติงาน ตัวอย่างเช่น ผ่าน new Thread(task).start() หรือผ่าน ThreadPoolExecutor ผลลัพธ์ของการดำเนินการแบบอะซิงโครนัสจะดึงข้อมูลผ่านเมธอด get(...)
Delayed
- ใช้สำหรับงานแบบอะซิงโครนัสที่ควรเริ่มในอนาคต เช่นเดียวกับใน DelayQueue ให้คุณตั้งเวลาก่อนเริ่มการทำงานแบบอะซิงโครนัส
ScheduledFuture<V>
- ส่วนต่อประสานเครื่องหมายที่รวมส่วนต่อประสานในอนาคตและส่วนต่อประสานที่ล่าช้า
RunnableScheduledFuture<V>
- อินเทอร์เฟซที่รวม RunnableFuture และ ScheduledFuture นอกจากนี้ คุณสามารถระบุได้ว่างานนั้นเป็นงานแบบครั้งเดียวหรือควรรันที่ความถี่ที่ระบุ
GO TO FULL VERSION