Junior — Middle
Кадом усулҳоро метавон барои пешгирии истиснои ConcurrentModificationException дар вақти кор бо коллексияҳо дар муҳити бисёрсоҳавӣ истифода бурд?
sobes.tech AI
Ҷавоб аз AI
Мултитред муҳитида коллекциялар билан ишлашда ConcurrentModificationException хатоини олдини олиш учун қуйидаги усуллардан фойдаланиш мумкин:
java.util.concurrentпакетидаги тўғри ишлайдиган коллекциялардан фойдаланинг, масалан,ConcurrentHashMap,CopyOnWriteArrayList.- Коллекцияга киришни қўл билан
synchronizedблоклари ёки бошқа синхронлаштириш механизмлари орқали синхронлаштиринг. - Бехатар ўзгартиришни қўллаб-қувватлайдиган итераторлардан фойдаланинг, масалан,
ListIteratorлистлар учун. - Итерация вақтида асосий коллекцияни ўзгартирмаслик учун коллекциялар нусхаларини яратинг (масалан,
new ArrayList<>(асосийРўйхат)), шу билан асосий коллекция ўзгартиришларидан ҳимояланг.
CopyOnWriteArrayListдан фойдаланиш мисоли:
CopyOnWriteArrayList<String> рўйхат = new CopyOnWriteArrayList<>();
рўйхат.add("item1");
for (String item : рўйхат) {
рўйхат.add("item2"); // бу ConcurrentModificationException келтирмайди
}