जावा 8 में एसिंक्रोनस कंप्यूटेशंस शुरू करने के दो तरीके हैं - CompletableFuture
और ForkJoinTask
। वे दोनों काफी समान दिखते हैं - CompletableFuture
के आंतरिक वर्ग भी ForkJoinTask
का विस्तार करते हैं।फोर्कजोइन टास्क बनाम CompletableFuture
क्या एक दूसरे का उपयोग करने का कोई कारण है?
एक प्रमुख अंतर यह है कि मैं देख सकता हूँ CompletableFuture.join
विधि बस ब्लॉक भविष्य पूरा हो गया है जब तक कि है, जबकि एक ForkJoinTask.join
कतार बंद काम चोरी कार्य आप पर शामिल हो रहे हैं मदद करने के लिए कर सकते हैं (waitingGet
सिर्फ एक ManagedBlocker
का उपयोग कर घूमती है) पूरा करना।
क्या एक या दूसरे पर कोई लाभ है?
मुझे लगता है कि मेरा प्रश्न इस बारे में अधिक है कि आप एक का उपयोग कब करेंगे और दूसरे नहीं (मान लें कि आप डिफ़ॉल्ट सामान्य एफजेपी का उपयोग कर रहे हैं)। एक CompletableFuture में शामिल होने पर, क्या यह उस कार्य को पूरा करने में सहायता करता है जिसमें आप शामिल हो रहे हैं? – thecoop
@thecoop मैं नहीं देखता कि आप एक दूसरे के साथ कैसे प्रतिस्थापित कर सकते हैं, CompletableFuture एक वादा है जिसमें ऑपरेशन है जैसे बस और फिर मान लीजिए, अब अगर आपका प्रश्न फोर्कजोइन टास्क का उपयोग करता है तो? मैं कहूंगा कि जब आप अपने समांतर एल्गोरिदम लिखते हैं –