Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

Java 9 में CompletableFuture API सुधार क्या हैं?


पूर्ण भविष्य एपीआई का उपयोग एसिंक्रोनस . के लिए किया जाता है प्रोग्रामिंग जावा में। इसका मतलब है कि हम गैर-अवरुद्ध 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


  1. जावा 9 में क्लास लोडर के परिवर्तन क्या हैं?

    सभी जावा प्रोग्राम जावा वर्चुअल मशीन (JVM) पर चलते हैं . संकलन के बाद, एक जावा वर्ग एक प्लेटफ़ॉर्म . में रूपांतरित हो जाता है और मशीन-स्वतंत्र बायटेकोड , और संकलित कक्षाएं .class . के रूप में संग्रहीत की जाती हैं फ़ाइलें। जब भी हम इसका उपयोग करने का प्रयास करते हैं, ClassLoader उस वर्ग को स्मृति म

  1. जावा 9 में जेशेल में हमें किन नियमों का पालन करने की आवश्यकता है?

    Java 9 एक इंटरैक्टिव आरईपीएल पेश किया (पढ़ें-मूल्यांकन करें-प्रिंट-लूप करें ) टूल:JShell , और यह हमें कोड स्निपेट निष्पादित करने और तत्काल परिणाम प्राप्त करने की अनुमति देता है। एक स्निपेट एक निर्देश है जो मानक जावा सिंटैक्स का उपयोग कर सकता है। यह एकल अभिव्यक्ति, कथन या घोषणा का प्रतिनिधित्व करता

  1. जावा 9 में @Deprecated एनोटेशन के लिए क्या सुधार हैं?

    कोई भी तत्व जिसे @Deprecated से एनोटेट किया जा सकता है यह दर्शाता है कि इस विशेष तत्व का अब निम्न कारणों से उपयोग नहीं किया जाएगा इसका उपयोग करना जोखिम भरा है और इससे त्रुटियां हो सकती हैं। भविष्य के संस्करणों में असंगत हो सकता है। भविष्य के संस्करणों में हटाया जा सकता है। एक बेहतर और अधिक कुशल समा