ConcurrentModificationException obyekt ruxsat etilmaganda bir vaqtda oʻzgartirishga urinilganda yuzaga keladi. Bu istisno odatda Java Collection sinflari bilan ishlaganda yuzaga keladi. Misol uchun - To'plamda boshqa mavzu takrorlanayotganda to'plamni o'zgartirishga ruxsat berilmaydi.
Bir vaqtning oʻzida oʻzgartirish istisnolarini qanday tuzataman?
Biz, shuningdek, bir tarmoqli muhitda bir vaqtning o'zida o'zgartirish istisnolaridan qochishimiz mumkin. Ob'ektni asosiy to'plam ob'ektidan olib tashlash uchun Iterator ning o'chirish usulidan foydalanishimiz mumkin. Lekin bu holda siz roʻyxatdan boshqa obyektni emas, faqat bir xil obyektni olib tashlashingiz mumkin.
Xaritada bir vaqtda oʻzgartirish istisnolarini qanday oldini olasiz?
foydalanish ConcurrentHashMap. oddiy HashMap-dan foydalanishda davom eting, lekin har bir modifikatsiyada yangi xarita yarating va sahna ortidagi xaritalarni almashtiring (almashtirish jarayonini sinxronlash yoki AtomicReference yordamida)
Iteratorning qaysi usuli bir vaqtning oʻzida oʻzgartirishni istisno qiladi?
Agar biz uning shartnomasini buzgan ob'ektda usullar ketma-ketligini chaqirsak, u holda ob'ekt ConcurrentModificationExceptionni chiqaradi. Masalan: agar to‘plamni takrorlashda biz to‘g‘ridan-to‘g‘ri o‘sha to‘plamni o‘zgartirishga harakat qilsak, berilgan fail-fast iterator ushbu ConcurrentModificationExceptionni chiqaradi.
Java stekining toʻlib ketishida bir vaqtda oʻzgartirish istisnosi nima?
Agar bitta ip ob'ekt shartnomasini buzadigan usul chaqiruvlari ketma-ketligini chiqarsa, obyekt bu istisnonichiqarishi mumkin. Misol uchun, agar ip to'plamni to'g'ridan-to'g'ri o'zgartirsa, u tez iterator yordamida to'plamni takrorlasa, iterator bu istisnoni o'tkazadi.