क्या javax.xml.XPathFactory.newInstance() थ्रेड-सुरक्षित है?जावा XPathFactory थ्रेड-सुरक्षा
मैं पूछ रहा हूं क्योंकि मुझे इसके लिए दस्तावेज अस्पष्ट लगता है। The JDK 5 docs बिल्कुल थ्रेड-सुरक्षा का जिक्र नहीं है; JDK 6 में उन्होंने निम्नलिखित लिखा:
XPathFactory क्लास थ्रेड-सुरक्षित नहीं है। दूसरे शब्दों में, यह सुनिश्चित करने के लिए एप्लिकेशन की ज़िम्मेदारी है कि किसी भी पल पर XPathFactory ऑब्जेक्ट का उपयोग करके अधिकांश थ्रेड है। कार्यान्वयन को टूटे हुए ग्राहकों से बचाने के लिए सिंक्रनाइज़ किए गए तरीकों को चिह्नित करने के लिए प्रोत्साहित किया गया है।
मैं इसे समझ, यह XPathFactory
के लिए एक सिंगलटन कार्यान्वयन के लिए सुरक्षित नहीं है, लेकिन कुछ इस तरह कर रही है सुरक्षित होना चाहिए:
XPath xPathEvaluator = XPathFactory.newInstance().newXPath();
मैं कुछ याद आ रही है? क्या यह उस वास्तविक वर्ग पर निर्भर करता है जो इसे फैलाता है? क्या मुझे उपरोक्त कथन वाली विधि synchronize
की आवश्यकता है?
धन्यवाद, मैं वही सोच रहा था, लेकिन मैं फिर से आश्वासन चाहता था :)। –
हमेशा हाथ पकड़ने के लिए :-) – Thilo
JAXP-XPath डिज़ाइन के बारे में कई बुरी चीजें हैं। उनमें से एक यह है कि XPathFactory.newInstance() बहुत महंगा है; दूसरा यह है कि आप इसे हर धागे में बार-बार कॉल करने की उम्मीद कर रहे हैं। दूसरा यह है कि आपके पास यह जानने का कोई तरीका नहीं है कि आप XPath 1.0 इंजन या XPath 2.0 इंजन वापस ले लेंगे या नहीं। अपने आप से पूछें कि क्या आप वास्तव में इस तंत्र का उपयोग करना चाहते हैं: यदि आप जानते हैं कि आप जो XPath इंजन चाहते हैं, तो इसे लोड करने के बेहतर तरीके हैं। –