हेड फर्स्ट डिजाइन पैटर्न पुस्तक से, डबल जाँच की लॉकिंग के साथ सिंगलटन पैटर्न नीचे के रूप में लागू किया गया है ताला लगा:क्यों की इस उदाहरण में अस्थिर प्रयोग किया जाता है डबल जाँच की
public class Singleton {
private volatile static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
मुझे समझ नहीं आता क्यों volatile
किया जा रहा है उपयोग किया गया। volatile
उपयोग डबल चेकिंग लॉकिंग i.e प्रदर्शन का उपयोग करने के उद्देश्य को हराने के लिए नहीं करता है?
मैंने सोचा कि डबल चेक लॉकिंग टूटा गया था, क्या किसी ने इसे ठीक किया? –
इसके लायक होने के लिए, मुझे हेड फर्स्ट डिज़ाइन पैटर्न से सीखने के लिए एक भयानक पुस्तक मिल गई। जैसा कि मैंने इसे वापस देखा है, अब यह सही समझ में आता है कि मैंने कहीं और पैटर्न सीख लिया है, लेकिन पैटर्न को जानने के बिना सीखने के लिए यह वास्तव में इसके उद्देश्य को पूरा नहीं करता है। लेकिन यह बहुत लोकप्रिय है, तो शायद यह सिर्फ मुझे घना था। :-) – corsiKa
@ डेविड हेफरनन मैंने इस उदाहरण को एक ऐसे तरीके के रूप में उपयोग किया है जिसमें जेवीएम को डीसीएल करने के लिए भरोसा किया जा सकता है। –