संक्षिप्त सारांश:
सेमफोर और काउंटडाउनचैच अलग उद्देश्य प्रदान करता है।
संसाधन तक थ्रेड पहुंच को नियंत्रित करने के लिए सेमाफोर का उपयोग करें ।
सभी थ्रेड के पूरा होने की प्रतीक्षा करने के लिए CountDownLatch का उपयोग करें
जेवाडोक से सेमाफोर परिभाषा:
एक सेमाफोर परमिट का एक सेट रखता है। यदि कोई परमिट उपलब्ध है, तो प्रत्येक अधिग्रहण () ब्लॉक करता है और फिर इसे लेता है। प्रत्येक रिलीज़ () एक परमिट जोड़ता है, संभावित रूप से एक अवरुद्ध अधिग्रहणकर्ता को जारी करता है।
हालाँकि, कोई वास्तविक परमिट ऑब्जेक्ट का उपयोग नहीं किया जाता है; सेमाफोर सिर्फ संख्या की गिनती उपलब्ध रहता है और उसके अनुसार कार्य करता है।
यह कैसे काम करता है ?
Semaphores का उपयोग समवर्ती थ्रेड्स की संख्या को नियंत्रित करने के लिए किया जाता है जो एक संसाधन का उपयोग कर रहे हैं। संसाधन किसी साझा डेटा या कोड ( महत्वपूर्ण अनुभाग ) या किसी फ़ाइल का एक ब्लॉक जैसा कुछ हो सकता है ।
एक सेमाफोर पर गिनती अलग-अलग धागे कॉल acquire
() और release
() के रूप में ऊपर और नीचे जा सकती है । लेकिन किसी भी समय, आपके पास सेमाफोर गणना से अधिक संख्या में धागे नहीं हो सकते।
सेमाफोर उपयोग के मामले:
- डिस्क तक समवर्ती पहुंच को सीमित करना (यह प्रतिस्पर्धा डिस्क डिस्क के कारण प्रदर्शन को मार सकता है)
- धागा निर्माण सीमित
- JDBC कनेक्शन पूलिंग / सीमित
- नेटवर्क कनेक्शन थ्रॉटलिंग
- सीपीयू या स्मृति गहन कार्यों को थ्रॉटलिंग
सेमाफोर उपयोग के लिए इस लेख पर एक नज़र डालें ।
काउंटडाउनलॉच परिभाषा से javadocs:
एक सिंक्रनाइज़ेशन सहायता जो एक या अधिक थ्रेड्स को प्रतीक्षा करने की अनुमति देती है, जब तक कि अन्य थ्रेड्स में किए गए संचालन का एक सेट पूरा नहीं हो जाता।
यह कैसे काम करता है?
काउंटडाउन लाइक एक थ्रेड की संख्या के साथ इनिशियलाइज़ किए गए काउंटर के द्वारा काम करता है, जो हर बार थ्रेड को पूरा करने के बाद घटता है। जब गिनती शून्य तक पहुंच जाती है, तो इसका मतलब है कि सभी थ्रेड्स ने अपने निष्पादन को पूरा कर लिया है, और थैले पर थ्रेड इंतजार निष्पादन को फिर से शुरू करते हैं।
CountDownLatch मामलों का उपयोग करें:
- अधिकतम समानता प्राप्त करना: कभी-कभी हम अधिकतम समानता प्राप्त करने के लिए एक ही समय में कई सूत्र शुरू करना चाहते हैं
- निष्पादन शुरू करने से पहले एन धागे को पूरा करें
- गतिरोध का पता लगाने।
CountDownLatch अवधारणाओं को स्पष्ट रूप से समझने के लिए इस लेख पर एक नज़र डालें ।
इस लेख में फोर्क जॉइन पूल पर भी एक नज़र डालिए । यह काउंटडाउनचैच की कुछ समानताएं हैं ।