لماذا يحدث استثناء التعديل المتزامن في جافا؟

جدول المحتويات:

لماذا يحدث استثناء التعديل المتزامن في جافا؟
لماذا يحدث استثناء التعديل المتزامن في جافا؟
Anonim

يحدث ConcurrentModificationException عندما يحاولتعديل كائن بشكل متزامن عندما يكون ذلك غير مسموح به. يأتي هذا الاستثناء عادةً عندما يعمل المرء مع فئات Java Collection. على سبيل المثال - لا يجوز لسلسلة رسائل تعديل مجموعة عندما تقوم سلسلة رسائل أخرى بالتكرار عليها.

كيف يمكنني إصلاح استثناء التعديل المتزامن؟

يمكننا أيضًا تجنب استثناء التعديل المتزامن في بيئة مترابطة واحدة. يمكننا استخدامطريقة الإزالة لـ Iteratorلإزالة الكائن من كائن المجموعة الأساسي. لكن في هذه الحالة ، يمكنك إزالة نفس الكائن فقط وليس أي كائن آخر من القائمة.

كيف تمنع استثناء التعديل المتزامن على الخريطة؟

useConcurrentHashMap. استمر في استخدام HashMap البسيط ، ولكن أنشئ خريطة جديدة على كل تعديل وتبديل الخرائط خلف الكواليس (مزامنة عملية التبديل أو استخدام AtomicReference)

ما هي طريقة المكرر التي تلقي استثناء تعديل متزامن؟

إذا استدعينا سلسلة من العمليات على كائن ينتهك عقده ، فإن الكائن يرمي ConcurrentModificationException. على سبيل المثال: إذا كنا نحاول تعديل هذه المجموعة أثناء التكرار على المجموعة مباشرةً ، فإن المكررفشل سريعسيرمي هذا الاستثناء المتزامن.

ما هو استثناء التعديل المتزامن في تجاوز مكدس جافا؟

إذا أصدر مؤشر ترابط واحد سلسلة من استدعاءات الطريقة التي تنتهك عقد كائن ما ، فقد يقوم الكائن بطرح هذا الاستثناء. على سبيل المثال ، إذا قام مؤشر ترابط بتعديل مجموعة مباشرة أثناء تكرارها على المجموعة باستخدام مكرر سريع الفشل ، فسيقوم المكرر بطرح هذا الاستثناء.

موصى به: