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`
}