Sobes.tech
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 пайда кылбайт
}