Niyə Java-da paralel modifikasiya istisnası baş verir?

Mündəricat:

Niyə Java-da paralel modifikasiya istisnası baş verir?
Niyə Java-da paralel modifikasiya istisnası baş verir?
Anonim

ConcurrentModificationİstisnası icazə verilməyəndəobyekt eyni vaxtda dəyişdirilməyə çalışıldıqda baş verir. Bu istisna adətən Java Collection dərsləri ilə işləyərkən baş verir. Misal üçün - Kolleksiya üzərində başqa mövzu təkrarlanan zaman mövzunun Kolleksiyaya dəyişiklik etməsi icazəli deyil.

Mən paralel modifikasiya istisnasını necə düzəldə bilərəm?

Biz həmçinin tək yivli mühitdə Paralel Modifikasiya İstisnasından qaça bilərik. Obyekti əsas kolleksiya obyektindən silmək üçün İteratorun silmə metodundan istifadə edə bilərik. Lakin bu halda, siz siyahıdan başqa obyekti yox, yalnız eyni obyekti silə bilərsiniz.

Xəritədə paralel modifikasiya istisnasının qarşısını necə ala bilərsiniz?

istifadə ConcurrentHashMap. sadə HashMap-dən istifadə etməyə davam edin, lakin hər modifikasiyada yeni xəritə yaradın və pərdə arxasında xəritələri dəyişdirin (keçid əməliyyatını sinxronlaşdırın və ya AtomicReference istifadə edin)

Hansı iterator metodu paralel modifikasiya istisnasını atır?

Əgər biz onun müqaviləsini pozan obyektdə metodlar ardıcıllığına müraciət etsək, o zaman obyekt ConcurrentModificationException atır. Məsələn: kolleksiya üzərində iterasiya zamanı biz birbaşa həmin kolleksiyanı dəyişməyə çalışırıqsa, o zaman verilmiş fail-fast iterator bu ConcurrentModificationException-u atacaq.

Java yığınının daşmasında paralel modifikasiya istisnası nədir?

Əgər tək başlıq obyektin müqaviləsini pozan metod çağırışlarının ardıcıllığını verirsə, obyekt bu istisnanı ata bilər. Məsələn, əgər başlıq kolleksiyanı uğursuz sürətli iterator ilə təkrarlayarkən kolleksiyanı birbaşa dəyişdirirsə, iterator bu istisnanı atacaq.

Tövsiyə: