जावा में समवर्ती संशोधन अपवाद क्यों होता है?

विषयसूची:

जावा में समवर्ती संशोधन अपवाद क्यों होता है?
जावा में समवर्ती संशोधन अपवाद क्यों होता है?
Anonim

ConcurrentModificationException तब होता है जब किसी ऑब्जेक्ट को समवर्ती रूप से संशोधित करने का प्रयास किया जाता है जब यह अनुमेय नहीं होता है। यह अपवाद आमतौर पर तब आता है जब कोई जावा संग्रह कक्षाओं के साथ काम कर रहा होता है। उदाहरण के लिए - किसी थ्रेड के लिए किसी संग्रह को संशोधित करने की अनुमति नहीं है जब कोई अन्य थ्रेड उस पर पुनरावृति कर रहा हो।

मैं समवर्ती संशोधन अपवाद को कैसे ठीक करूं?

हम सिंगल थ्रेडेड वातावरण में समवर्ती संशोधन अपवाद से भी बच सकते हैं। हम ऑब्जेक्ट को अंतर्निहित संग्रह ऑब्जेक्ट से निकालने के लिए Iterator की हटाने की विधि का उपयोग कर सकते हैं। लेकिन इस मामले में, आप केवल एक ही वस्तु को हटा सकते हैं, सूची से कोई अन्य वस्तु नहीं।

आप मानचित्र पर समवर्ती संशोधन अपवाद को कैसे रोकते हैं?

useConcurrentHashMap का उपयोग करें। सरल हैश मैप का उपयोग करना जारी रखें, लेकिन प्रत्येक संशोधन पर एक नया नक्शा बनाएं और दृश्यों के पीछे मानचित्र स्विच करें (स्विच ऑपरेशन को सिंक्रनाइज़ करना या परमाणु संदर्भ का उपयोग करना)

इटरेटर का कौन सा तरीका समवर्ती संशोधन अपवाद को फेंकता है?

यदि हम किसी ऑब्जेक्ट पर विधियों के अनुक्रम को लागू करते हैं जो उसके अनुबंध का उल्लंघन करता है, तो ऑब्जेक्ट ConcurrentModificationException को फेंक देता है। उदाहरण के लिए: यदि संग्रह पर पुनरावृति करते समय, हम सीधे उस संग्रह को संशोधित करने का प्रयास करते हैं, तो दिया गया fail-fast iterator इस ConcurrentModificationException को फेंक देगा।

जावा स्टैक ओवरफ्लो में समवर्ती संशोधन अपवाद क्या है?

यदि एक एकल थ्रेड किसी ऑब्जेक्ट के अनुबंध का उल्लंघन करने वाले विधि आह्वान का एक क्रम जारी करता है, तो ऑब्जेक्टइस अपवाद को फेंक सकता है। उदाहरण के लिए, यदि कोई थ्रेड किसी संग्रह को सीधे संशोधित करता है, जबकि वह एक असफल-तेज़ पुनरावर्तक के साथ संग्रह पर पुनरावृति कर रहा है, तो पुनरावर्तक इस अपवाद को फेंक देगा।

सिफारिश की: