में समवर्ती हैशैप की अलग-अलग 'अगली' प्रविष्टि जेडीके 1.6 में, डौग ली फ़ील्ड से पहले final
का उपयोग करती है।जेडीके 1.6 और जेडीके 1.7
static final class HashEntry<K,V> {
final K key;
final int hash;
volatile V value;
final HashEntry<K,V> next;
JDK 1.7 में जबकि, next
क्षेत्र volatile
से पहले किया गया है। मैं यह भी ध्यान देता हूं कि जेडीके 1.7 में, get
विधि value
फ़ील्ड पढ़ने के लिए getObjectVolatile
विधि को गोद लेती है, जिसमें अस्थिर लोड अर्थशास्त्र है।
मुझे कोई समझ नहीं है कि क्यों डौग ली पहले final
का उपयोग करता है। अगर शुद्धता में समस्याएं हैं, तो वह जेडीके 1.7 (जेडीके 1.8) में volatile
के साथ इसे कैसे बदल सकता है?
संपादित करें:
विशेष रूप से, मेरे सवाल है कि हम JDK 1.6 के क्रियान्वयन में volatile
साथ final
बदल सकते है?
यह कक्षा जावा 8 में सीएचएम में नहीं है। – assylias
ठीक है, अगर यह आपका प्रश्न है, तो नहीं, आप नहीं कर सकते। संशोधक को बदलने का कारण यह है कि कार्यान्वयन पूरी तरह से बदला गया था। यह एक अलग परिवर्तन नहीं है। – RealSkeptic
@ रीयलस्केप्टिक, क्या आप स्पष्टीकरण के लिए कुछ विवरण, या लेख प्रस्तुत कर सकते हैं? धन्यवाद। –