multithreading - Java: Is this Singleton Class variable assignment thread safe? -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 6 जवाब

सार्वजनिक वर्ग ए {} < / P>

// 1. लगता है कि टेस्ट निश्चित रूप से एक सिंगलटन है, यहां सिंगलटन डीफॉल्ट असफल छोड़ें

// 2. टेस्ट फ़ील्ड ए (क्लास ए) में कोई गंदा मूल्य समस्या नहीं है, या क्या यह है?

// 3. सिंगलटन ऑब्जेक्ट (पूर्व, यह नमूना) फ़ील्ड असाइनमेंट (बहु-थ्रेडेड परिवेश में) में कोई रेस की स्थिति या डेडलॉक इश्यू नहीं है, या क्या?

  सार्वजनिक कक्षा परीक्षण {निजी ए एक; सार्वजनिक ए () (यदि (ए == रिक्त) {a = नया ए (); } वापसी; }}  

आपका कोड धागा सुरक्षित नहीं है।

मान लीजिए

  • थ्रेड 1 नामक test.get ()
  • थ्रेड 1 प्राप्त करें () विधि की जांच की गई (एक == रिक्त) -> जो सही है
  • --- परन्तु संदर्भ स्विच --- ---
  • थ्रेड 2 को test.get ()
  • थ्रेड 2 प्राप्त करें () विधि की जांच की गई (एक == रिक्त) -> जो सच है < / Li>
  • थ्रेड 2 मिल () विधि एक ए 1 ऑब्जेक्ट बनाता है और इसे किसी को निर्दिष्ट करती है;
  • थ्रेड 2 मिल () मेरिट रिटर्न A1
  • --- Context switch यहाँ
  • थ्रेड 1 मिल () विधि एक ए 2 ऑब्जेक्ट बनाता है और इसे किसी को निर्दिष्ट करती है;
  • थ्रेड 1 मिल () विधि रिटर्न A2
  • < P> इसका अर्थ है कि दो भिन्न धागे को कक्षा ए के दो अलग-अलग उदाहरण मिलते हैं

    आशा है कि यह मदद करता है


    Comments

    Popular posts from this blog

    apache - 504 Gateway Time-out The server didn't respond in time. How to fix it? -

    c# - .net WebSocket: CloseOutputAsync vs CloseAsync -

    c++ - How to properly scale qgroupbox title with stylesheet for high resolution display? -