मैंने कोड में देखा, सब कुछ int है - काउंटरडाउनलैच कन्स्ट्रक्टर को पारित पैरामीटर int है, सिंक में चर int है, Sync.getCount() का रिटर्न प्रकार int है। लेकिन CountDownLatch.getCount() एक लंबा रिटर्न देता है? सोच रहा हूँ क्यों।क्यों countDownLatch.getCount() एक लंबा लेकिन एक int नहीं देता है?
उत्तर
मुझे नहीं पता कि आपको उस प्रश्न का पर्याप्त उत्तर मिलेगा, जब तक कि कोई व्यक्ति एपीआई उत्तर नहीं देता है, लेकिन ऐसा लगता है कि यह "डीबगिंग और परीक्षण" के लिए है।
public long getCount() {...} // just for debugging and testing
भविष्यरोधक?
सिर्फ इसलिए कि काउंटरडाउनलैच (int) एकमात्र मौजूदा कन्स्ट्रक्टर है, इसका मतलब यह नहीं है कि आप जावा 8 में काउंटरडाउनलैच (लंबा) जोड़ नहीं सकते हैं, अगर कोई भी उस तरह की चीज़ के उपयोग के साथ आता है।
मूल्य केवल संकेतक है, विश्वसनीय नहीं है, वैसे भी।
मुझे लगता है कि ऐसा इसलिए है क्योंकि int का उपयोग किसी हस्ताक्षरित int को स्टोर करने के लिए किया जा रहा है, 0 से 2 ** 32-1 तक गिनती है। यद्यपि आप एक int में एक हस्ताक्षरित int स्टोर कर सकते हैं, इसके साथ गणना करते समय, मूल्य को लंबे समय तक बढ़ावा देना बहुत आसान होता है, जो उस सीमा को काफी स्वाभाविक रूप से समायोजित कर सकता है।
धन्यवाद, यह बहुत समझाता है। – DeepNightTwo
मेरे पास एक अलग विचार है: सरल निरीक्षण।
जब आप स्रोत कोड पर जाते हैं, तो आप पाएंगे कि कार्यान्वयन एक आंतरिक वर्ग सिंक का उपयोग करता है। सिंक में getCount() भी है - और वह int लौटाता है। दूसरे शब्दों में: संपूर्ण कार्यान्वयन int पर आधारित है; और केवल एक बाहरी गेटर लंबे समय तक उपयोग कर रहा है। मुझे लगता है कि उसमें बिल्कुल कोई समझ नहीं है।
हाँ ... मल्टीथ्रेड एनवी में, यह मान विश्वसनीय नहीं है। मैं इस खोज को सिर्फ इतना सोच रहा हूं कि क्यों लंबे समय तक उपयोग करना ... धन्यवाद! – DeepNightTwo