हमने अपने स्रोतों में volatile
के उपयोग को प्रतिबंधित करना शुरू कर दिया है क्योंकि यह कोड लिखना बहुत आसान है जो हमेशा अपेक्षित काम नहीं करता है।
मेरे अनुभव में, लोग धागे के बीच मूल्य साझा करने के लिए अस्थिर जोड़ते हैं। और फिर, कोई और मूल्य को संशोधित करना शुरू कर देता है। और ज्यादातर समय, यह काम करता है। लेकिन उत्पादन में, आपको अजीब त्रुटियां मिलनी शुरू होती हैं जो ट्रैक करना वाकई मुश्किल होती हैं। काउंटर 100'000 गुना बढ़ाए जाते हैं (परीक्षण केवल उन्हें 10 गुना बढ़ाते हैं) लेकिन 99'997 पर समाप्त होते हैं। जावा 1.4 में, लंबे मूल्य वास्तव में शायद ही कभी भ्रष्ट हो सकते हैं।
दूसरी ओर, Atomic*
सहायक वर्ग, केवल एक छोटा ओवरहेड लगाते हैं और वे हमेशा विज्ञापित के रूप में काम करते हैं।
तब तक जब तक आपके पास volatile
का उपयोग करने के लिए बहुत अच्छा कारण (*) नहीं है, तो हमेशा Atomic*
सहायक वर्ग पसंद करते हैं।
यदि आप नहीं जानते कि Atomic*
सहायक कक्षाओं में प्रत्येक वर्ण वास्तव में क्या है, तो आपको वास्तव में volatile
से बचना चाहिए।
*: समयपूर्व अनुकूलन कभी भी एक अच्छा कारण नहीं है।
स्रोत
2012-10-12 12:43:36
चूंकि किसी ने इसका उल्लेख किया है (न तो यहां और न ही डुप्लिकेट पर): डब्ल्यू/परमाणु वर्गों में आपके पास निफ्टी विधि आलसी है। अधिकांश आर्किटेक्चर पर यह मूल अस्थिर लेखन से बेहतर प्रदर्शन करता है (लेकिन इसमें समान अर्थशास्त्र नहीं है)। मूल रूप से आलसी सेट को सीपीयू लिखने वाले बफर को फ्लश करने की आवश्यकता नहीं होती है जो बहुत अच्छा है क्योंकि सीपीयू बंद होने पर उन्हें फ्लश किया जा सकता है। – bestsss