मैं java.text.NumberFormat का उपयोग केवल अधिक पठनीय स्ट्रिंग्स में संख्या परिवर्तित करने के लिए, अल्पविराम, हजारों को अलग करने के साथ आदि मूल रूप से मैं इसे के रूप में परिभाषित करते हैं:जावा: संख्याफॉर्मैट के साथ सिंक्रनाइज़ेशन समस्या?
public static NumberFormat nf = NumberFormat.getInstance(Locale.US);
... और फिर मैं सिर्फ nf.format फोन (some_number) किसी भी धागे में जहां मैं किसी संख्या का एक पठनीय संस्करण बनाना चाहता हूं। लेकिन JavaDoc को देखते हुए, यह कहते हैं: "संख्या स्वरूपों आम तौर पर सिंक्रनाइज़ नहीं कर रहे हैं यह प्रत्येक थ्रेड के लिए अलग प्रारूप उदाहरण बना की सिफारिश की है एक से अधिक थ्रेड एक प्रारूप समवर्ती तक पहुंचते हैं तो इसे बाहर से सिंक्रनाइज़ किया जाना चाहिए।।।"
मैं केवल NumberFormat वस्तु का प्रारूप (संख्या) विधि का उपयोग कर रहा है, वहाँ कभी एक तुल्यकालन मुद्दा हो सकता है? मैंने इसके बजाय NumberFormat.getInstance (Locale.US) .format (संख्या) का उपयोग करने का प्रयास किया, लेकिन ऐसा करने के साथ ओवरहेड जुड़ा हुआ है जो हर बार मुझे लगता है कि वास्तव में इसकी आवश्यकता नहीं है। क्या इसे वास्तव में बाहरी सिंक्रनाइज़ेशन की आवश्यकता है? या क्या नंबरफॉर्मैट के बिना एक ही चीज़ को पूरा करने का एक आसान, कुशल तरीका है?
धन्यवाद!
इसे https://gist.github.com/jontejj/5430320 का उपयोग करके माप लिया गया, परिणाम http://1.microbenchmarks.appspot.com/run/[email protected]/se.softhouse पर प्रकाशित किए गए हैं .common.numbers.NumberFormat लाभ प्राप्त करना वास्तव में काफी महत्वपूर्ण है अगर प्रारूपण संख्या केवल एक ही चीज चल रही है। यह संख्याफॉर्मैट बनाए गए स्वरूपकों के लिए कैश रखता है और उन्हें वापस करने से पहले केवल उन्हें क्लोन करता है। – jontejj
और यह सब सबक्लास पर लागू होता है .. विशेष रूप से डेटफॉर्मैट – Snicolas