मैं कक्षा द्वारा प्रदान किए गए परमाणु संचालन द्वारा परमाणुता को कैसे प्राप्त किया जाता है यह जानने के लिए java.util.concurrent.atomic.AtomicInteger के स्रोत कोड के माध्यम से जा रहा था। उदाहरण AtomicInteger.getAndIncrement के लिए() विधि स्रोत मैं पाश के लिए एक अनंत अंदर आपरेशन के अनुक्रम लिखने के प्रयोजन को समझने में सक्षम नहीं कर रहा हूँ के रूप मेंjava.util.concurrent.atomic पैकेज में परिभाषित कक्षाओं में परमाणुता कैसे प्राप्त की जाती है?
public final int getAndIncrement() {
for (;;) {
int current = get();
int next = current + 1;
if (compareAndSet(current, next))
return current;
}
}
इस प्रकार है। क्या यह जावा मेमोरी मॉडल (जेएमएम) में किसी भी विशेष उद्देश्य की सेवा करता है। कृपया मुझे वर्णनात्मक समझ खोजने में मदद करें। अग्रिम में धन्यवाद।
आप अनदेखा कर रहे हैं कि उस लूप में एक विधि कहा जा रहा है और उस विधि का परिणाम लूप को तोड़ने की स्थिति है। Google "तुलना करें और स्वैप करें" –
यह 'गोटो' के लिए क्लासिक उपयोग केस है। एक 'गोटो' भाषा में हम अनंत लूप का उपयोग करते हैं। –