कुछ भी नहीं।
परिवर्तनीय r
MyRunnable
ऑब्जेक्ट स्वयं ही नहीं है; यह कोड के आपके ब्लॉक के भीतर उस ऑब्जेक्ट पर केवल संदर्भ है।
प्रारंभ में आप एक नया MyRunnable
ऑब्जेक्ट बनाते हैं। और फिर, आप इसे "नाम दें"/इसे वैरिएबल r
पर असाइन करें। इसके बाद आप इसे Thread
कन्स्ट्रक्टर में पास कर सकते हैं (वेरिएबल का उपयोग करके वर्णन करें कि आप किस ऑब्जेक्ट के बारे में बात कर रहे हैं)। उस कन्स्ट्रक्टर के भीतर, यह लगभग निश्चित रूप से अन्य संदर्भों को सौंपा जाएगा (जेडीके में मैं उपयोग कर रहा हूं, यह target
नामक एक फ़ील्ड है)।
बाद में, आप अपने संदर्भ r
को किसी अन्य ऑब्जेक्ट पर दोबारा दर्ज करें - इस मामले में, null
ऑब्जेक्ट। इसका ऑब्जेक्ट पर कोई प्रभाव नहीं पड़ता है, यह संदर्भ को इंगित करता है, केवल संदर्भ। इसी प्रकार किसी अन्य वस्तु को इंगित करने वाले अन्य संदर्भों पर इसका कोई प्रभाव नहीं पड़ता है।
तो Thread.target
संदर्भ अभी भी उसी MyRunnable
ऑब्जेक्ट पर इंगित करता है जिसे आपने प्रारंभ में बनाया था, और थ्रेड के दृष्टिकोण से, कुछ भी नहीं बदला है।
एकमात्र संभावित अंतर यह है कि आपके (बाहरी) कोड स्निपेट में अब बनाए गए ऑब्जेक्ट का संदर्भ नहीं है। तो निम्नानुसार कोड उस ऑब्जेक्ट पर किसी भी तरीके को कॉल करने में सक्षम नहीं होगा, या इसे विधि तर्क आदि के रूप में पास नहीं करेगा। (यह कोई समस्या नहीं होनी चाहिए - या आश्चर्यजनक - यह देखते हुए कि आपने जानबूझकर उस ऑब्जेक्ट के अपने संदर्भ को निरस्त कर दिया है!)
तो कुछ भी नहीं एक विशेष वस्तु के लिए एक संदर्भ रखती है, तो कचरा कलेक्टर अपनी अगली चलाने पर उस वस्तु नहीं पहुंचा जा सकता पर विचार, और यह एकत्रित करेगा। यद्यपि आपको इस बारे में चिंता करने की ज़रूरत नहीं है, क्योंकि यदि आपके पास ऑब्जेक्ट का संदर्भ नहीं है तो आप इसके साथ कुछ भी करने में सक्षम नहीं होंगे (जीसी के पीछे पूरा सिद्धांत)।
इस मामले में, MyRunnable
जीसीड नहीं होगा क्योंकि Thread
अभी भी इसका संदर्भ रखता है।
कहा कि, अगर निर्माता अलग ढंग से व्यवहार और एक संदर्भ की दुकान है, क्योंकि यह एक (शायद यह सिर्फ toString()
प्रतिनिधित्व करता है) की ज़रूरत नहीं थी नहीं करने के लिए थे, तो वस्तु नहीं पहुंचा जा सकता समझा जाएगा, और एकत्र किया जाएगा ।दोनों मामलों में कचरा कलेक्टर सही चीज करेगा - ऑब्जेक्ट इकट्ठा करना अगर केवल और कुछ भी नहीं तो इसका मतलब है - बिना किसी चिंता के या आपके कोड में इसके बारे में जानना।
+1 नीचे दिए गए मेरे उत्तर पर एक नज़र डालें :) –
@ Eng.Fouad Brilliant :) बहुत बहुत धन्यवाद! –
आपका स्वागत है। साथ ही, यहां मेरे उत्तर पर एक नज़र डालें: http://stackoverflow.com/questions/9404625/java-pass-by-reference/9404727#9404727 –