क्या जावा में ThreadLocal के विशिष्ट इस्तेमाल होता है का उपयोग करता है। जब कोई इसका इस्तेमाल करता है? मैं इस java docs आलेख से आवेदन विवरण नहीं दे सका।ThreadLocal
उत्तर
जब आप वस्तुओं है कि सुरक्षित थ्रेड नहीं हैं, लेकिन (प्रदर्शन के कारणों के लिए) उन तक पहुंच सिंक्रनाइज़ करने के लिए नहीं करना चाहते हैं का उपयोग करना चाहते है। अधिक या कम, आप वस्तु आप, कई बार उपयोग करने के लिए इतना है कि आप यह सुनिश्चित करें कि हर धागा कि कि एक्सेसर कॉल कर सकते हैं एक अलग, अप्रयुक्त एक हो जाता है की जरूरत के लिए एक्सेसर पैदा करते हैं। एक बहुत ही विशिष्ट प्रयोग SimpleDateFormat है, जो एक वर्ग है कि अगर यह धागा सुरक्षित थे, अपने उदाहरण स्थिर के रूप में, आदेश में एक ही उदाहरण पुन: उपयोग करने में घोषित किया जाएगा उपयोग करने के लिए है। Dr. Dobbs: Using Thread-Local Variables In Java
शायद अधिक निदर्शी उदाहरण आप के लिए अच्छा हो सकता है:
method1(): ... method2(somedata) ...
method2(somedata): ... method3(somedata) ...
method3(somedata): ... method4(somedata) ...
method4(somedata): ... do something with somedata ...
इस तरह की स्थितियों बहुस्तरीय आर्किटेक्चर में उदाहरण के लिए होते हैं (यूआई दूरस्थ मुखौटा कहता है, दूरदराज के
यहाँ एक अच्छा यह वर्णन लेख है मुखौटा अनुप्रयोग परत कहता है, अनुप्रयोग परत डोमेन परत कहता है, डोमेन स्तर का हठ परत कहता है, ...) उन तरीकों() विभिन्न वर्गों के हैं वहाँ में सबसे अधिक तरीकों के लिए अतिरिक्त पैरामीटर 'somedata' जोड़ने को छोड़कर इस तरह के डेटा पारित करने के लिए कोई अच्छा तरीका है हमारे कोड, यह ब्रेक जैसे खुले बंद सिद्धांत। इस समस्या का समाधान ThreadLocal है:
method1(): ... threadLocal.set(somedata); method2(); threadLocal.set(null); ...
method2(): ... method3() ...
method3(): ... method4() ...
method4(): ... do something with threadLocal.get() ...
मैं कहना चाहता हूँ कि अधिकांश सामान्य ThreadLocal उपयोग है आप किसी वस्तु है कि एक प्रक्रिया के समय आपको हर जगह सुलभ हो गया है और आप इस के संदर्भ में पारित करने के लिए नहीं करना चाहती जब सभी परतों पर वस्तु। सिंगलटन पैटर्न की तरह कुछ लेकिन प्रति थ्रेड।
उदाहरण डीबी कनेक्शन हैं, सत्र हाइबरनेट आदि आप अपने प्रवाह की शुरुआत में कहीं उन्हें खोलने, बंद प्रवाह के अंत में प्रतिबद्ध/और प्रवाह के दौरान हर जगह का उपयोग करें।
यदि आपका प्रवाह धागे से जुड़ा हुआ है, जैसे एलेक्सआर का उल्लेख है, तो आप को private static final ThreadLocal<T> p
संपत्ति के साथ बना सकते हैं, एक्सेसर विधियां जोड़ें। फिर आप अपने प्रवाह के साथ क्रमशः p.set(), p.remove(), और p.get() का उपयोग कर सकते हैं।
public final class C {
private static final ThreadLocal<String> p = new ThreadLocal<String>();
// initialize property at the begining of your thread (flow)
public static void set(final String s){
p.set(s);
}
// use property during the thread's lifecycle
// for instance: C.get().equals(myString)
public static String get(){
return p.get();
}
// remember to remove property from the thread when you're done, specially if it came from a thread pool
public static void remove(){
p.remove();
}
}
- 1. ThreadLocal सिंगलटन
- 2. servlet में threadlocal चर
- 3. ThreadLocal का उद्देश्य?
- 4. क्यों जावा ThreadLocal चर स्थिर
- 5. कैसे ThreadLocal उपयोग पुनर्प्रयोग को कम करता है
- 6. ServletRequest और Servlet में प्रतिक्रिया स्टोर करने के लिए ThreadLocal: क्या के लिए?
- 7. कोई थ्रेडलोकल <T> चर से मूल्यों को कैसे जोड़ता है?
- 8. जावा - एक्लिप्स में 'थ्रेडलोकल' चर के मूल्य की जांच कैसे करें?
- 9. एंटरप्राइज़ एप्लिकेशन में थ्रेडलोकल उपयोग
- 10. मैं इनपुट लंबाई के आधार पर DecimalFormat व्यवहार कैसे बदल सकता हूं?
- 11. थ्रेड स्थानीय निकालने विधि
- 12. Google App Engine (GAE)
- 13. थ्रेडलोकल <> और मेमोरी लीक
- 14. थ्रेडलोकल संसाधन लीक और वीक रेफरेंस
- 15. थ्रेडलोकल
- 16. थ्रेडलोकल हटा दें?
- 17. क्या थ्रेडलॉक पर थ्रेडसेफ ऑब्जेक्ट डालने में कोई फायदा है?
- 18. ऑब्जेक्टऑटपुटस्ट्रीम.writeStreamHeader() को ओवरराइड कैसे करें?
- 19. एचटीपीआरएल कनेक्शन और जावा में कुकी मैनेजर का उपयोग करके प्रत्येक कनेक्शन के लिए विभिन्न कुकीज़ का उपयोग कैसे करें
- 20. @PersistenceContext EntityManager थ्रेड-सुरक्षा स्प्रिंग और जावा ईई
- 21. चेकलिस्ट
- 22. जेएसई
- 23. आवंटन मुक्त खेल
- 24. बिलाव फेंकता java.lang.UnsupportedOperationException जब मेरे आवेदन undeployed
- 25. एक वेब ऐप में स्टेटिक थ्रेडलोकल चर - क्या कोई सुरक्षा/प्रदर्शन समस्याएं हैं?
- 26. थ्रेडलोकल्स
- 27. स्प्रिंग-डब्ल्यू एंडपॉइंट में HTTP हेडर का उपयोग कैसे करें?
- 28. पार्सिंग संख्या सुरक्षित रूप से और लोकेल-सेंसिटिवली
- 29. सुरक्षाContextHolder धागा सुरक्षित है?
- 30. ThreadPoolExecutor
के संभावित डुप्लिकेट [कब और कैसे मैं एक ThreadLocal चर का उपयोग करना चाहिए?] (Http://stackoverflow.com/questions/817856/when-and-how-should-i-use-a-threadlocal- चर) – YoK