CompletableFuture API जावा में एसिंक्रोनस प्रोग्रामिंग के लिए उपयोग किया जाता है। इसका मतलब है कि हम नॉन-ब्लॉकिंग कोड लिख सकते हैं एक टास्क को main() थ्रेड से अलग थ्रेड पर चलाकर और main() थ्रेड को इसकी प्रगति, पूर्णता या विफलता के बारे में सूचित कर सकते हैं। जावा 9 CompletableFuture API में कुछ सुधार पेश करता है, वे हैं: "टाइमआउट और देरी के लिए समर्थन", "सबक्लासिंग के लिए बेहतर समर्थन" और "नए फैक्ट्री मेथड का जोड़"।
टाइमआउट और देरी के लिए समर्थन
public CompletableFutureorTimeout(long timeout, TimeUnit unit)
उपरोक्त मेथड का उपयोग यह निर्दिष्ट करने के लिए किया गया है कि यदि टास्क एक निश्चित समय अवधि के भीतर पूरा नहीं होता है तो प्रोग्राम रुक जाता है और TimeoutException फेंकता है।
public CompletableFuturecompleteOnTimeout(T value, long timeout, TimeUnit unit)
उपरोक्त मेथड प्रदान किए गए मान के साथ CompletableFuture को पूरा करता है। यदि नहीं, तो यह दिए गए टाइमआउट से पहले पूरा हो जाता है।
सबक्लासिंग के लिए बेहतर समर्थन
public Executor defaultExecutor()
उपरोक्त मेथड उन एसिंक मेथड के लिए उपयोग किए जाने वाले डिफ़ॉल्ट एक्जीक्यूटर को लौटाता है जो एक्जीक्यूटर नहीं दिखाते। इसे सबक्लास में ओवरराइड किया जा सकता है ताकि कम से कम एक स्वतंत्र थ्रेड देने वाला एक्जीक्यूटर लौटाया जा सके।
public CompletableFuture newIncompleteFuture()
उपरोक्त मेथड CompletionStage मेथड द्वारा लौटाए जाने वाले विनिर्देशन का एक नया अधूरा CompletableFuture लौटाता है।
नए फैक्ट्री मेथड
public static CompletableFuture completedFuture(U value)
उपरोक्त फैक्ट्री मेथड प्रदान किए गए मान के साथ पहले से पूर्ण एक नया CompletableFuture लौटाता है।
public static CompletionStage completedStage(U value)
उपरोक्त फैक्ट्री मेथड प्रदान किए गए मान के साथ पहले से पूर्ण एक नया CompletionStage लौटाता है और केवल इंटरफेस CompletionStage में उपलब्ध मेथड के साथ संगत है।