मैं कई टुकड़ों से एक स्ट्रिंग का निर्माण कर रहा हूं और ऐसा करने के लिए StringBuffer
या StringBuilder
का उपयोग करना चाहता हूं। जावा 5 डॉक्स से, मुझे लगता है कि StringBuilder
चेतावनी है कि StringBuilder
कीजावा स्ट्रिंगबिल्डर और थ्रेड सुरक्षा
उदाहरण से अधिक थ्रेड द्वारा उपयोग के लिए सुरक्षित नहीं हैं के साथ, पसंद किया जाता है जब संभव।
इस बयान से, मैं समझता हूँ कि मैं एक ही StringBuilder
उदाहरण से अधिक थ्रेड द्वारा साझा नहीं होना चाहिए। लेकिन क्या इस मामले के बारे में:
//Is this safe?
//foo() is called simultaneously by multiple threads
String foo(String a, String b) {
return new StringBuilder(a).append(b).toString();
}
यहाँ एक ही समय में समारोह में एक से अधिक थ्रेड हो सकता है, एक ही समय में StringBuilder
वर्ग का उपयोग कर (जैसे, स्थैतिक चर का साथ-साथ उपयोग, यदि कोई हो तो), लेकिन प्रत्येक धागे का अपना अलग उदाहरण StringBuilder
होगा। प्रलेखन से, मैं यह तय नहीं कर सकता कि यह कई धागे द्वारा उपयोग के रूप में गिना जाता है या नहीं।
foo() को स्थिर विधि बनाने में कुछ लाभ हो सकता है, क्योंकि यह किसी भी आवृत्ति चर को स्पर्श नहीं करता है। – Kip
@ किप: कक्षा पर निर्भर करता है। लेकिन कुछ बार आप पॉलिमॉर्फिक परिचालन करना और विधि को स्थैतिक तरीके से लागू करना चाहते हैं। – OscarRyz
स्ट्रिंग.कोनकैट का उपयोग करना तेज होगा, लेकिन मुझे लगता है कि यह सिर्फ एक उदाहरण है। –