ConcurrentModificationException dalam Kaedah Disegerakkan: Merungkai Kekeliruan
Dalam kaedah yang disegerakkan seperti yang disediakan, pengecualian ConcurrentModificationException boleh timbul walaupun dengan penyegerakan pengubahsuai. Pengecualian ini biasanya terhasil daripada mengubah suai koleksi yang diulang dalam gelung lelaran.
Isu di sini ialah penyegerakan kaedah tidak menjamin bahawa koleksi tidak akan diubah suai semasa lelaran berlaku. Untuk mengelakkan pengecualian ini, adalah penting untuk mengelak daripada mengubah suai koleksi semasa lelaran.
Contoh tipikal coretan kod yang akan mencetuskan pengecualian ini ialah:
Iterator iterator = collection.iterator(); while (iterator.hasNext()) { Item item = (Item) iterator.next(); if (item.satisfiesCondition()) { collection.remove(item); } }
Sebaliknya, kod tersebut harus menggunakan kaedah iterator.remove() untuk mengalih keluar item daripada koleksi semasa lelaran. Jika penambahan pada koleksi diperlukan, subjenis ListIterator boleh digunakan kerana ia menyediakan kaedah add() apabila berurusan dengan senarai.
Atas ialah kandungan terperinci Mengapa Saya Mendapat ConcurrentModificationException dalam Kaedah Disegerakkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!