ConcurrentModificationException нь объектыг зөвшөөрөгдөөгүй үеднэгэн зэрэг өөрчлөхийг оролдох үед үүсдэг. Энэ үл хамаарах зүйл нь Java Collection ангиудтай ажиллахад ихэвчлэн тохиолддог. Жишээ нь - Цуглуулга дээр өөр хэлхээ давтагдаж байх үед хэлхээг өөрчлөхийг зөвшөөрөхгүй.
Зэрэгцсэн өөрчлөлтийн онцгой тохиолдлыг би хэрхэн засах вэ?
Бид мөн нэг урсгалтай орчинд нэгэн зэрэг өөрчлөлт оруулах онцгой байдлаас зайлсхийх боломжтой. Бид Iterator-ийн устгах аргыг ашиглан үндсэн цуглуулгын объектоос объектыг устгаж болно. Гэхдээ энэ тохиолдолд та жагсаалтаас өөр объектыг устгахгүй, зөвхөн ижил объектыг устгах боломжтой.
Газрын зураг дээр нэгэн зэрэг өөрчлөлт оруулахаас хэрхэн сэргийлэх вэ?
ConcurrentHashMap ашиглана уу. энгийн HashMap-г үргэлжлүүлэн ашиглах боловч өөрчлөлт болгон дээр шинэ газрын зураг үүсгэж, хөшигний ард газрын зургийг сэлгээрэй (шилжүүлэх ажиллагааг синхрончлох эсвэл AtomicReference ашиглан)
Давталтын аль арга нь зэрэгцээ өөрчлөлт оруулах онцгой тохиолдол үүсгэдэг вэ?
Хэрэв бид түүний гэрээг зөрчсөн объект дээр дараалсан аргуудыг дуудвал тухайн объект ConcurrentModificationException-ийг шиддэг. Жишээ нь: цуглуулгыг давтаж байх үед бид тэр цуглуулгыг шууд өөрчлөхийг оролдвол өгөгдсөн fail-fast iterator нь энэ ConcurrentModificationException-г үүсгэх болно.
Java стек халихад нэгэн зэрэг өөрчлөлт оруулах онцгой тохиолдол юу вэ?
Хэрэв нэг хэлхээ нь объектын гэрээг зөрчсөн аргын дуудлагуудын дарааллыг гаргавал объект нь энэ үл хамаарах зүйлийг гаргаж болно. Жишээлбэл, хэрэв хэлхээ нь бүтэлгүйтлийн давталтаар цуглуулгыг давтаж байх үед цуглуулгыг шууд өөрчилвөл давталт нь энэ үл хамаарах зүйлийг гаргах болно.