2012-12-05 39 views
16

AtomicBoolean में अपने मूल्य को संग्रहीत करता हैक्यों java.util.concurrent.atomic.AtomicBoolean आंतरिक रूप से int के साथ कार्यान्वित किया जाता है?</p> <pre><code>private volatile int value; </code></pre> <p>फिर, उदाहरण के लिए, अपने मूल्य निकालने इस तरह से किया जाता है:

public final boolean get() { 
    return value != 0; 
} 

इसके पीछे कारण क्या है? क्यों boolean का उपयोग नहीं किया गया था?

+7

क्योंकि मशीन स्तर पर कोई बूलियन नहीं है, केवल पूर्णांक हैं। –

उत्तर

6

AFAIK, int सबसे छोटा प्रकार सीएएस संचालन विभिन्न मशीन प्रकारों में लागू किया जा सकता है।

नोट: ऑब्जेक्ट आवंटन 8 बाइट गठबंधन हैं, छोटे प्रकार का उपयोग करके कोई भी स्मृति सहेज नहीं पाएगी।

0

शायद यह उसी आधार पर Atomic कक्षाओं में से कई को आधार बनाने में सक्षम होना है (Unsafe), जो पूर्णांक का उपयोग करता है और तुलना और स्वैप ऑपरेशन प्रदान करता है।

Concurrency in Practice आंतरिक कार्यकलापों का एक अच्छा स्पष्टीकरण प्रदान करता है।