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

ความแตกต่างระหว่าง CompletableFuture และ Future ใน Java 9?


อนาคตที่สมบูรณ์ คลาสดำเนินการ อนาคต อินเทอร์เฟซใน Java อนาคตที่สมบูรณ์ สามารถใช้เป็นอนาคตที่เสร็จสมบูรณ์ได้อย่างชัดเจน อนาคต อินเทอร์เฟซไม่ได้มีคุณสมบัติมากมาย เราจำเป็นต้องได้รับผลลัพธ์ของการคำนวณแบบอะซิงโครนัสโดยใช้ get() เมธอดซึ่งถูกบล็อก ดังนั้นจึงไม่มีขอบเขตที่จะเรียกใช้งานที่ต้องพึ่งพาหลายรายการใน การไม่บล็อก แฟชั่น ในขณะที่ CompleteFuture คลาสสามารถจัดเตรียมฟังก์ชันเพื่อเชื่อมโยงงานที่ต้องพึ่งพากันหลายงานที่ทำงาน แบบอะซิงโครนัส ดังนั้นเราจึงสามารถสร้างกลุ่มของงานที่มีการทริกเกอร์งานต่อไปเมื่อผลของงานปัจจุบันพร้อมใช้งาน

ไวยากรณ์

คลาสสาธารณะ CompletableFuture ขยาย Object ใช้ Future, CompletionStage 

ตัวอย่าง

<ก่อน>นำเข้า java.util.function.Supplier;import java.util.concurrent.CompletableFuture;import java.util.concurrent.ExecutionException; คลาสสาธารณะ CompletableFutureTest { โมฆะคงที่สาธารณะหลัก (สตริง args []) พ่น ExecutionException, InterruptedException { เครื่องคิดเลข calc =เครื่องคิดเลขใหม่ (4, 7); อนาคตที่สมบูรณ์<จำนวนเต็ม> อนาคต =อนาคตที่สมบูรณ์supplyAsync (คำนวณ); อนาคตแล้วยอมรับ (ผลลัพธ์ -> { System.out.println(ผลลัพธ์); }); System.out.println("CompletableFutureTest End.... "); เธรด. สลีป(10000); }}// คลาสเครื่องคิดเลข class Calculator ใช้ Supplier { int ส่วนตัว x, y; เครื่องคิดเลขสาธารณะ (int x, int y) { this.x =x; this.y =y; } @Override รับจำนวนเต็มสาธารณะ () { ลอง { Thread.sleep (3000); } จับ (InterruptedException จ) { e.printStackTrace (); } ส่งคืน x + y; }}

ผลลัพธ์

CompletableFutureTest End....11