2011-07-12 10 views
5

यदि मुझे किसी ऑब्जेक्ट के अंदर किसी इंटी फ़ील्ड पर परमाणु पहुंच की आवश्यकता है, तो क्या यह एक परमाणु इंटेगर के रूप में फ़ील्ड घोषित करने के लिए पर्याप्त है या क्या मुझे एक AtomicIntegerFieldUpdater का उपयोग करने की आवश्यकता है? (और क्यों?)जावा - ऑब्जेक्ट के भीतर क्षेत्र में परमाणु पहुंच

+0

परमाणु पहुंच परिभाषित करें। ऑपरेशन का अनुक्रम आप परमाणु बनाना चाहते हैं? – biziclop

+0

कई धागे क्षेत्र में वृद्धि/कमी कर रहे हैं। – lgp

उत्तर

6

AtomicInteger का उपयोग करना पर्याप्त है। परमाणु अद्यतनकर्ता volatile क्षेत्रों के साथ उपयोग के लिए हैं; प्राथमिक उपयोग केस डेटा संरचनाएं हैं जिनमें बड़ी संख्या में फ़ील्ड हैं जिन पर परमाणु पहुंच की आवश्यकता होती है; आप प्रत्येक फ़ील्ड के लिए AtomicInteger संदर्भ के बिना परमाणु semantics के साथ उन क्षेत्रों का उपयोग करने के लिए फ़ील्ड अद्यतनकर्ता का उपयोग करें।

विस्तृत चर्चा के लिए, this link देखें।

1

AtomicInteger और दोस्तों को आमतौर पर पर्याप्त होना चाहिए, और आमतौर पर बेहतर है क्योंकि इसमें प्रतिबिंब या अन्य ऐसी हैकरी शामिल नहीं है।

AtomicIntegerFieldUpdater उपयोगी हो सकता है जहां आपके पास बहुत से उदाहरण हैं जहां इसे अद्यतन करने की आवश्यकता है, क्योंकि इससे वस्तुओं की कुल संख्या कम हो जाती है। यह विशेष रूप से उपयोगी है अगर सीधे पढ़ने और लिखने के अलावा संचालन कम है। उदाहरण के लिए AtomicReferenceFieldUpdater का उपयोग संलग्नक विधि के लिए java.nio में किया जाता है, जिसे आम तौर पर एक बार सेट किया जाता है (एक प्राप्त-सेट-सेट के रूप में उजागर किया जाता है) और कई बार पढ़ा जाता है।

संबंधित मुद्दे