ทั้ง หรือหมดเวลา() และ completeOnTimeOut() เมธอดที่กำหนดไว้ใน CompletableFuture คลาสและสองวิธีนี้ถูกนำมาใช้ใน Java 9 orTimeout() สามารถใช้เมธอดเพื่อระบุว่าหากงานที่กำหนดไม่เสร็จสิ้นภายในระยะเวลาหนึ่ง โปรแกรมจะหยุดการทำงานและแสดง TimeoutException ในขณะที่ completeOnTimeOut() วิธีการเสร็จสมบูรณ์ อนาคตที่สมบูรณ์ ด้วยค่าที่จัดให้ มิฉะนั้น จะเสร็จสิ้นก่อนหมดเวลาที่กำหนด
ไวยากรณ์สำหรับ orTimeout()
อนาคตที่สมบูรณ์ในอนาคตหรือหมดเวลา (หมดเวลานาน หน่วย TimeUnit)
ตัวอย่าง
<ก่อน> นำเข้า java.util.concurrent.CompletableFuture นำเข้า java.util.concurrent.TimeUnit คลาสสาธารณะ OrTimeoutMethodTest { โมฆะสาธารณะหลัก (สตริง args []) พ่น InterruptedException { int a =10; int b =15; อนาคตที่สมบูรณ์ .supplyAsync(() -> { ลอง { TimeUnit.SECONDS.sleep(5); } catch(InterruptedException e) { e.printStackTrace(); } return a + b; }) .orTimeout (4, TimeUnit.SECONDS) .เมื่อเสร็จสมบูรณ์ ((ผลลัพธ์ ข้อยกเว้น) -> { System.out.println (ผลลัพธ์); ถ้า (ข้อยกเว้น !=null) exception.printStackTrace (); }); TimeUnit.SECONDS.สลีป(10); }}ผลลัพธ์
25
ไวยากรณ์สำหรับ completeOnTimeOut()
CompletableFuture สาธารณะcompleteOnTimeout (ค่า T หมดเวลานาน หน่วย TimeUnit)
ตัวอย่าง
<ก่อน> นำเข้า java.util.concurrent.CompletableFuture; นำเข้า java.util.concurrent.TimeUnit คลาสสาธารณะ CompleteOnTimeOutMethodTest { โมฆะสาธารณะหลัก (สตริง args []) พ่น InterruptedException { int a =10; int b =15; อนาคตที่สมบูรณ์ .supplyAsync(() -> { ลอง { TimeUnit.SECONDS.sleep(5); } catch(InterruptedException e) { e.printStackTrace(); } return a + b; }) .completeOnTimeout (0, 4, TimeUnit.SECONDS) .แล้วยอมรับ (ผลลัพธ์ -> System.out.println(ผลลัพธ์)); TimeUnit.SECONDS.สลีป(10); }}ผลลัพธ์
25