2015-12-07 10 views
8

कैसे CompletableFuture JDK 8 में पेश io.netty.util.concurrent.Future Netty द्वारा प्रदान के साथ तुलना करता है?जावा 8 CompletableFuture बनाम Netty भविष्य

Netty प्रलेखन कहा गया है कि

JDK 8 CompletableFuture जो कुछ हद तक overlaps io.netty.util.concurrent.Future http://netty.io/wiki/using-as-a-generic-library.html

सवाल मैं जवाब पाने के लिए कोशिश कर रहा हूँ कहते हैं कर रहे हैं:

  1. उनकी समानताएं और differen क्या होगा सीएस हो?
  2. दो के प्रदर्शन विशेषताओं में क्या अंतर है? कौन सा बेहतर स्केल करने में सक्षम होगा?

समानता/मतभेद के संबंध में, मैं निम्नलिखित साथ आने के लिए सक्षम किया गया है:

समानता: मौलिक समानता जा रहा है दोनों के रूप में जावा की तुलना में गैर-अवरुद्ध हैं कि भविष्य। दोनों वर्गों में भविष्य में श्रोता जोड़ने, आत्मनिरीक्षण विफलता और कार्य की सफलता जोड़ने और कार्य से परिणाम प्राप्त करने के लिए विधियां उपलब्ध हैं।

अंतर: CompletableFuture दूसरी ओर आदि कई async गतिविधियों रचना Netty के io.netty.util.concurrent.Future जैसी चीजों के लिए एक अधिक बेहतर इंटरफ़ेस है लगता है कई श्रोताओं के लिए एक ही भविष्य में जोड़े जाने की अनुमति देता है, और इसके अलावा श्रोताओं के लिए के लिए अनुमति देता हटाया जाना।

+0

आप 'CompletableFuture आह्वान कर सकते हैं।तो कुछ अलग-अलग() 'विधियों को कई बार, जो अन्य भावी ढांचे में एकाधिक श्रोताओं को जोड़ने के समान है। –

+0

क्या CompletableFuture में नेटटी फ्यूचर की तरह इवेंट लूप है? – user1870400

+0

@ user1870400 'CompletableFuture' (और 'CompletionStage' को लागू करने वाली किसी अन्य श्रेणी) में' thenApply' और 'thenApplyAsync' जैसी विधियां हैं जो विभिन्न तरीकों से काम करती हैं। 'ThenApply' जैसे तरीके तुरंत उसी थ्रेड पर निष्पादित हो जाएंगे, जबकि 'thenApplyAsync'' निष्पादक 'का उपयोग करके निष्पादित करेगा, जिसे किसी ईवेंट लूप के साथ कार्यान्वित किया जा सकता है (हालांकि डिफ़ॉल्ट एक कार्य चोरी पूल है)। – kag0

उत्तर

1

अगर हम है कि पूरे पैरा (विशेष रूप से पहला वाक्य)

जावा कभी कभी विचारों कि निर्माणों Netty द्वारा प्रदान की नियम के अंतर्गत अपनाकर अग्रिम को देखो। उदाहरण के लिए, JDK 8 CompletableFuture जो कुछ हद तक io.netty.util.concurrent.Future overlaps कहते हैं। इस तरह के एक मामले में, Netty के निर्माणों आप के लिए एक अच्छा पलायन का रास्ता प्रदान करते हैं; हम दिमाग में भावी माइग्रेशन के साथ एपीआई को परिश्रमपूर्वक अपडेट करेंगे।

क्या यह मूल रूप से कह रहा है कि netty Future और CompletableFuture इसी अवधारणा है, लेकिन अलग-अलग लोगों द्वारा अलग अलग समय पर लागू किया है।
नेटी ने अपना भविष्य बनाया क्योंकि जावा में कोई भी उपलब्ध नहीं था, और वे गुइस जैसे किसी चीज़ से निर्भरता के रूप में नहीं खींचना चाहते थे। लेकिन अब, जावा ने एक बनाया है, और यह उपयोग के लिए उपलब्ध है।
पैराग्राफ के अंत में वे मूल रूप से कह रहे हैं कि नेटटी एपीआई भविष्य में CompletableFuture के साथ Future को प्रतिस्थापित कर सकता है।
जहां तक ​​समानताएं/मतभेद हैं, वे future/promise पैटर्न के कई कार्यान्वयन में से एक हैं। जब आप netty एपीआई और netty विशिष्ट सामान का उपयोग कर रहे netty एक का प्रयोग करें, अन्यथा CompletableFuture का उपयोग करें।

संबंधित मुद्दे