लेकिन difference between CountDownLatch and CyclicBarrier in Java है कि उन्हें अलग करता है और वह यह है कि, आप पुन: उपयोग नहीं कर सकते एक ही CountDownLatch उदाहरण एक बार गिनती शून्य तक पहुंच जाता है और कुंडी खुली रहती है,
दूसरी CyclicBarrier को रीसेट करने के बाद CyclicBarrier को फिर से इस्तेमाल किया जा सकता है, एक बार बैरियर टूट जाने के बाद।
CountDownLatch की एक उपयोगी संपत्ति यह है कि इसके लिए यह आवश्यक नहीं है कि थ्रेड्स को CountDownLatch कहा जाए क्योंकि countDown प्रतीक्षा कर रहा है कि गिनती आगे बढ़ने से पहले शून्य तक पहुंच जाए,
यह किसी भी thread को आगे बढ़ने से रोकता है और तब तक इंतजार करता है जब तक कि सभी थ्रेड्स पास नहीं हो जाते।
एक CyclicBarrier एक वैकल्पिक Runnable कमांड का समर्थन करता है, जो एक बार बाधा बिंदु के बाद चलाया जाता है, पार्टी में अंतिम धागा आने के बाद, लेकिन किसी भी थ्रेड को जारी करने से पहले।
यह बाधा कार्रवाई किसी भी पक्ष के जारी रहने से पहले साझा-स्थिति को अपडेट करने के लिए उपयोगी है।
CyclicBarrier विफल सिंक्रनाइज़ेशन प्रयासों के लिए एक fast-fail all-or-none breakage model का उपयोग करता है: यदि कोई थ्रेड बाधा, interruption, failure, or timeout,अन्य सभी थ्रेड्स, यहां तक कि उन सभी को समय से पहले एक अवरोध बिंदु छोड़ देता है,
जो अभी तक एक पिछले से फिर से शुरू नहीं हुए हैं await (),BrokenBarrierException (या InterruptedException के माध्यम से असामान्य रूप से छोड़ देंगे यदि वे भी एक ही समय में बाधित हो गए थे)।
यह आरेख अच्छी तरह से जावा समरूपता में काउंटडाउनचैच और साइक्लिक बैरियर के बीच के अंतर को स्पष्ट करता है:
difference between CountDownLatch and CyclicBarrier
यह सब जावा में काउंटडाउनचैच और साइक्लिक बैरियर के बीच अंतर के बारे में है। जैसा कि मैंने कहा, महत्वपूर्ण अंतर यह है कि आप CyclicBarrier का पुन: उपयोग कर सकते हैं लेकिन एक बार काउंट डाउन शून्य तक पहुंचने पर CountDownLatch का पुन: उपयोग नहीं किया जा सकता है।
इसलिए CyclicBarrier का उपयोग अक्सर तब किया जाता है जब कार्य को दोहराया जाता है जबकि CountDownLatch का उपयोग क्लाइंट कनेक्शन स्वीकार करने से पहले प्रारंभिक कैश लोड करने जैसे एक बार के कार्य के लिए किया जाता है।
0 Comments