लिंक में मैं नीचे singleton intantiation पाया:
सार्वजनिक स्थिर सिंगलटन getInstanceDC () {If (_instance == null) {// एकल चेक किया गया (1) सिंक्रनाइज़ (सिंगलटन.क्लैस) {if (_instance == null) {// डबल चेक किया गया _instance = new सिंगलटन (); }}} वापसी _instance; }
मुझे एकल चेक यानी (1) बिंदु नहीं मिल रहा है। इसका उपयोग यहां किसी भी तरह से एक धागा सिंक्रनाइज़ किए गए ब्लॉक के अंतर्गत उदाहरण की जांच करेगा, तो पहले जांच का उपयोग करने का क्या मतलब है?
सादर
जयेंद्र
विचार करें कि एक multithreaded वातावरण में दो धागे आपके सिंगलटन तक पहुंच सकते हैं। यहां डबल चेक के बिना क्या हो सकता है।
पहले धागा प्रवेश getInstanceDC ()
; _instance
है शून्य
ताकि यह अगर
ब्लॉक में प्रवेश करे दूसरा धागा प्रवेश getInstanceDC ()
; _instance
है शून्य
ताकि यह अगर
ब्लॉक में प्रवेश करे पहले धागा एक नया उदाहरण बनाता है दूसरा धागा एक नया उदाहरण बनाता है।
सिंक्रनाइज़ ब्लॉक में डबल चेक इस समस्या का समाधान करता है।
तो पूरी प्रक्रिया को सिंक्रनाइज़ क्यों नहीं करें? उत्तर प्रदर्शन कारणों के लिए है।
No comments:
Post a Comment