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