Junior — Middle
Көптөгөн жиптер менен иштөөдө ConcurrentModificationException ката кетирүүнү алдын алуу үчүн кайсы ыкмаларды колдонсо болот?
sobes.tech AI
AIден жооп
Көп иштеген чөйрөдө коллекциялар менен иштөөдө, ConcurrentModificationException ката болбошу үчүн төмөнкү ыкмаларды колдонсо болот:
java.util.concurrentпакетинен ишенимдүү коллекциялар, мисалы,ConcurrentHashMap,CopyOnWriteArrayListколдонуу.- Коллекцияга кирүүнү кол менен
synchronizedблоктору же башка синхрондоштуруу механизмдери аркылуу синхрондоштуруу. - Коопсуз өзгөртүүнү колдоочу итераторлорду колдонуу, мисалы,
ListIteratorлисттер үчүн. - Итерирлөө учурунда негизги коллекцияны өзгөртпөө үчүн коллекциялардын көчүрмөлөрүн түзүү (мисалы,
new ArrayList<>(негизгиТизмек)аркылуу), ошондо негизги коллекциянын өзгөртүүлөрүнөн коргоо.
CopyOnWriteArrayList колдонуу мисалы:
CopyOnWriteArrayList<String> тизмек = new CopyOnWriteArrayList<>();
тизмек.add("элемент1");
for (String элемент : тизмек) {
тизмек.add("элемент2"); // бул ConcurrentModificationException пайда кылбайт
}