java - Safe Publication without happens-before? Anyhow besides final? -


जेसीपी के अनुसार (16.2.2 सुरक्षित प्रकाशन):

ऐसा होता है-पहले गारंटी वास्तव में एक मजबूत सुरक्षित प्रकाशन द्वारा की गई दृश्यता और आदेश के मजबूत वादे जब एक्स को सुरक्षित रूप से ए से बी में प्रकाशित किया जाता है, तो सुरक्षित प्रकाशन ने एक्स की स्थिति की दृश्यता की गारंटी देता है, लेकिन अन्य चर की अवस्था में से ए को छुआ हो सकता है लेकिन अगर कतार पर ए डालते एक्स होता है- बी से पहले उस कतार से एक्स लाता है, न केवल बी को राज्य में देखते हैं कि ए यह छोड़ दिया है (यह मानते हुए कि एक्स बाद में ए या किसी और के द्वारा संशोधित नहीं किया गया है), लेकिन बी देखता है हेडऑफ से पहले सब कुछ ए (फिर से, एक ही चेतावनी के अधीन)

मैं सोच रहा हूँ जब सुरक्षित प्रकाशन बिना ऐसा हो सकता है-पहले, अर्थात् w / o अस्थिर / परमाणु या तुल्यकालन (या एएक्सा जैसे चौखटे के जरिए जो किसी भी अंदर सूचीबद्ध है)?

एक मामला अपरिवर्तनीय वस्तु में अंतिम क्षेत्र है, जहां आप इसे किसी भी अतिरिक्त चरण के रूप में प्रकाशित कर सकते हैं। < P> क्या कोई अन्य मामला है?

UPD: 3.5.3 पुनः पढ़ें। सुरक्षित प्रकाशन मुहावरे, एक और मामला - "एक स्थिर प्रारंभकर्ता से एक ऑब्जेक्ट संदर्भ प्रारंभ करना" ऐसा लगता है कि ये सभी विकल्प हैं।

मुझे इसके अलावा कुछ भी नहीं पता है , और एक नज़र इस की पुष्टि करने के लिए लगता है। अध्याय 17.4, अंतिम को छोड़कर हर चीज के साथ सौदा करता है, जो कि 17.5 में अलग से समझाया गया है।

यह ध्यान दिया जाना चाहिए, हालांकि, जेवीएम के अंतर्गत कुछ भी आंतरिक रूप से हमेशा दिखाई दे संभावित रूप से जावा कोड में डेटा दौड़ में योगदान करते हैं। यह अधिकतर सरणी लंबाई, वर्चुअल तालिका पॉइंटर और स्ट्रिंग सामग्री को प्रभावित करता है। इन्हें कभी भी आरंभिक या अन्यथा असंगत के रूप में नहीं देखा जा सकता है।

Comments