CompletableFuture API Improvements
Java 9 ปรับปรุง CompletableFuture สำหรับ asynchronous programming เพิ่ม 3 พื้นที่หลัก:
1. Support for Timeouts and Delays
orTimeout()
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
ถ้า task ไม่เสร็จภายใน timeout -> โยน TimeoutException
completeOnTimeout()
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
ถ้า task ไม่เสร็จภายใน timeout -> complete ด้วย fallback value
2. Improved Support for Subclassing
defaultExecutor()
public Executor defaultExecutor()
คืน default executor สำหรับ async methods อาจ override ใน subclass
newIncompleteFuture()
public <U> CompletableFuture<U> newIncompleteFuture()
คืน incomplete CompletableFuture ใหม่สำหรับ subclass
3. New Factory Methods
completedFuture()
public static <U> CompletableFuture<U> completedFuture(U value)
คืน CompletableFuture ที่ complete แล้วด้วย value
completedStage()
public static <U> CompletionStage<U> completedStage(U value)
คืน CompletionStage ที่ complete แล้ว (interface level)
สรุป
การปรับปรุงเหล่านี้ทำให้ CompletableFuture ยืดหยุ่นขึ้น รองรับ timeout patterns และ subclassing ได้ดีกว่า