यदि मैं किसी सिंक्रनाइज़ विधि या सिंक्रनाइज़ किए गए ब्लॉक के अंदर किसी ऑब्जेक्ट तक पहुंचता हूं, तो उस एक्सेस किए गए तत्व में सभी ऑब्जेक्ट भी सिंक्रनाइज़ किए जाते हैं?क्या जावा का सिंक्रनाइज़ेशन पूर्ण कैश अपडेट करेगा, या केवल उस ऑब्जेक्ट को सिंक्रनाइज़ किया जाएगा?
वहाँ एक वस्तु Queue
एक तुल्यकालन add()
और take()
विधि है, को स्वीकार करने और बाहर सौंपने जटिल वस्तु Thing
है कल्पना कीजिए। Thing
में इसमें अन्य विभिन्न वस्तुओं के साथ कई सूचियां हैं।
अब छवि धागा Before
Thing
बनाता है और Thing
में कुछ मौजूदा वस्तुओं डालता है, इन वस्तु और इतने पर के कुछ संशोधित करता है। Before
धागा Thing
Queue
जोड़ता है। थोड़ी देर बाद After
Queue
से Thing
लेता है।
प्रश्न: Thing
और उसके सभी बच्चे/सबोबजेक्ट Before
के समान राज्य में होंगे? भले ही After
धागा शायद कुछ उपखंडों में से एक पर काम कर रहा हो? क्योंकि मैं थ्रेड After
के लिए प्रोसेसर को चित्रित करता हूं, फिर भी उस सबलेमेंट पर कुछ कैश की गई जानकारी हो सकती है (उस सबोबजेक्ट का पता अभी भी वही है)। सिंक्रनाइज़ तरीके से पिता ऑब्जेक्ट Thing
तक पहुंचने के माध्यम से यह सभी कैश किए गए सामान को अमान्य कर दिया जाएगा?
कृपया समवर्ती libs आदि जैसे उत्तरों को उत्तर न दें। मैं समझना चाहता हूं कि क्या हो रहा है।
हाँ मुझे पता है, लेकिन यह मेरा सवाल नहीं था :-) सिंक्रनाइज़ेशन को प्रोसेसर कैश को भी प्रभावित करना चाहिए, ताकि परिवर्तन सामान्य स्मृति में फंस जाए, यही मेरा प्रश्न है। मुझे पता है कि यदि आप mulitple समानांतर धागे से सिंक्रनाइज़ किए गए ब्लॉक के बिना किसी संदर्भ का उपयोग करते हैं तो यह सब कुछ गड़बड़ हो जाता है। लेकिन यह एक थ्रेड से दूसरी थ्रेड में सामानों को पार करने और यह सुनिश्चित करने के बारे में अधिक है कि डेटास्ट्रूचर अभी भी सही है। मेरे कहे का मतलब समझो? –
पाउलो द्वारा जवाब देखें। अवरुद्ध धागे सिंक्रनाइज़ेशन का केवल एक पहलू है, इससे पहले होता है कि रिश्ते (कैश को फ्लश करना) उतना ही महत्वपूर्ण है जितना अधिक नहीं। यह समझने के लिए भी बहुत मुश्किल है और एपीआई के बारे में अस्पष्ट नहीं है - उदाहरण के लिए, मुझे लगता है कि SwingUtilities.invokeLater पहले होता है, लेकिन मैं 100% निश्चित नहीं हूं)। मैं गोएट्ज़ एट अल से प्रैक्टिस में जावा कंसुरेंसी की दृढ़ता से अनुशंसा करता हूं। उन्होंने पहले-पर होने पर बहुत जोर दिया। – toto2
स्पष्टीकरण के बिना डाउनवॉटिंग के लिए धन्यवाद ... @ फ्रांज: यह मेरे लिए स्पष्ट नहीं था कि आप मेमोरी मॉडल के बारे में पूछ रहे थे। मुझे अपने जवाब पर पुनर्विचार करने दो। – musiKk