2011-12-15 15 views
17

क्या होता है यदि AtomicIntegerInteger.MAX_VALUE तक पहुंचता है और वृद्धि हुई है?परमाणु इंटेगर वृद्धि

क्या मान शून्य पर वापस जाता है?

+16

आप अधिकतम मूल्य को पूर्णांक सेट करके और फिर इसे बढ़ाने के द्वारा आसानी से इसे आजमा सकते हैं। – Gabe

+5

शून्य इस प्रश्न के लिए कोई मूल संख्या –

+7

+1 नहीं है! मुझे लगता है कि स्टैक ओवरफ़्लो का बिंदु हमारे लिए इस तरह के सवालों का जवाब देना है और सवाल पूछने के लिए किसी को बुरा महसूस नहीं करना है। मुद्दा यह नहीं है कि उपयोगकर्ता को "इसे समझने" में सक्षम होना चाहिए या नहीं। उन्हें वैध रूप से सहायता चाहिए और हम इसे उपलब्ध कराने के लिए यहां हैं। –

उत्तर

32

खुद के लिए देखें:

System.out.println(new AtomicInteger(Integer.MAX_VALUE).incrementAndGet()); 
System.out.println(Integer.MIN_VALUE); 

आउटपुट: जैसे कि यह MIN_VALUE को रैप करता

-2147483648 
-2147483648 

लग रहा है।

6

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?

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

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