मैंने हाल ही में कोड का एक टुकड़ा देखा जो ThreadLocal
ऑब्जेक्ट का उपयोग करता था और इसके अंदर ConcurrentHashMap
रखता था।क्या थ्रेडलॉक पर थ्रेडसेफ ऑब्जेक्ट डालने में कोई फायदा है?
क्या इसमें कोई तर्क/लाभ है, या यह अनावश्यक है?
मैंने हाल ही में कोड का एक टुकड़ा देखा जो ThreadLocal
ऑब्जेक्ट का उपयोग करता था और इसके अंदर ConcurrentHashMap
रखता था।क्या थ्रेडलॉक पर थ्रेडसेफ ऑब्जेक्ट डालने में कोई फायदा है?
क्या इसमें कोई तर्क/लाभ है, या यह अनावश्यक है?
समवर्ती hashmap को केवल संदर्भ ThreadLocal
में रहता है, तो जाहिर है hashmap केवल एक ही धागे से संदर्भित है। ऐसे मामले में मैं कहूंगा कि यह पूरी तरह से अनावश्यक है।
हालांकि, यह कोई कल्पना करना अन्य धागे के साथ "साझा करने" धागे की स्थानीय रूप से संग्रहीत hashmap मुश्किल नहीं है:
ThreadLocal<ConcurrentHashMap<String, String>> tl = ...
// ...
final ConcurrentHashMap<String, String> props = tl.get();
EventQueue.invokeLater(new Runnable() {
public void run() {
props.add(key.getText(), val.getText());
}
});
दरअसल। 'थ्रेडलोकल 'एन धागे को एन स्वतंत्र चर के लिए अनुमति देता है - यह बिल्कुल मौजूद वस्तुओं से संबंधित नहीं हो सकता है (प्रत्येक थ्रेडलोकल की एक अलग और/या अद्वितीय वस्तु नहीं है)। –
अच्छा बिंदु - मैं जांच करूंगा कि ऐसा उपयोग है या नहीं। – RonK
या तो वह ThreadLocal
को गलत तरीके से इस्तेमाल किया है, या ConcurrentHashMap
को गलत तरीके से। संयोजन की भावना 0 के करीब है।
यह सही नहीं है। ऐसे ध्वनि उपयोग-मामले हैं जहां थ्रेड लोकल में ऑब्जेक्ट एकाधिक थ्रेड द्वारा साझा किया जाता है। –
@aioobe ने जो कहा, उसके अलावा InheritableThreadLocal
के मामले पर विचार करें, जिसमें स्थानीय का मूल्य थ्रेड से प्रत्येक बच्चे धागे को पारित किया जाता है।
और जैसा कि @pst कहता है, अलग-अलग (गैर विरासत योग्य) ThreadLocal
एस में समान मूल्य को रोकने के लिए कुछ भी नहीं है।
संक्षेप में, आपको थ्रेड स्थानीय लोगों का एक संपूर्ण विश्लेषण करना है, जिस तरह से उन्हें प्रारंभ किया गया है और जिस तरीके से उनका उपयोग किया जाता है, वे सुरक्षित रूप से निष्कर्ष निकाल सकते हैं कि उन्हें थ्रेडसेफ होने की आवश्यकता नहीं है।
@Downvoter - समझाने की देखभाल? – RonK
यहां कुछ लोग हैं जो बस बिना किसी टिप्पणी के ... नीचे ... मैं बिना टिप्पणी के डाउनवॉट्स की अनुमति नहीं दूंगा ... – Cris