क्या होता है यदि AtomicInteger
Integer.MAX_VALUE
तक पहुंचता है और वृद्धि हुई है?परमाणु इंटेगर वृद्धि
क्या मान शून्य पर वापस जाता है?
क्या होता है यदि AtomicInteger
Integer.MAX_VALUE
तक पहुंचता है और वृद्धि हुई है?परमाणु इंटेगर वृद्धि
क्या मान शून्य पर वापस जाता है?
खुद के लिए देखें:
System.out.println(new AtomicInteger(Integer.MAX_VALUE).incrementAndGet());
System.out.println(Integer.MIN_VALUE);
आउटपुट: जैसे कि यह MIN_VALUE को रैप करता
-2147483648
-2147483648
लग रहा है।
browing स्रोत कोड, वे सिर्फ एक
private volatile int value;
है और, और विभिन्न स्थानों, वे जोड़ सकते हैं या यह से घटाना, उदा
public final int incrementAndGet() {
for (;;) {
int current = get();
int next = current + 1;
if (compareAndSet(current, next))
return next;
}
}
में तो यह मानक जावा पूर्णांक गणित का पालन करें और Integer.MIN_VALUE के लिए चारों ओर लपेट चाहिए। परमाणु इंटेगर के लिए जावाडॉक्स इस मामले पर चुप हैं (मैंने जो देखा है), इसलिए मुझे लगता है कि भविष्य में यह व्यवहार बदल सकता है, लेकिन ऐसा लगता है कि यह बेहद असंभव है।
अगर परमाणु हों तो यह मदद करेगा।
यह भी देखना What happens when you increment an integer beyond its max value?
आप अधिकतम मूल्य को पूर्णांक सेट करके और फिर इसे बढ़ाने के द्वारा आसानी से इसे आजमा सकते हैं। – Gabe
शून्य इस प्रश्न के लिए कोई मूल संख्या –
+1 नहीं है! मुझे लगता है कि स्टैक ओवरफ़्लो का बिंदु हमारे लिए इस तरह के सवालों का जवाब देना है और सवाल पूछने के लिए किसी को बुरा महसूस नहीं करना है। मुद्दा यह नहीं है कि उपयोगकर्ता को "इसे समझने" में सक्षम होना चाहिए या नहीं। उन्हें वैध रूप से सहायता चाहिए और हम इसे उपलब्ध कराने के लिए यहां हैं। –