Java. Как в данном коде исправить ConcurrentModificationException?
Данный код, при создании большого кол-ва потоков выдает java.util.ConcurrentModificationException. И в 84 строке иногда происходит выход за приделы массива(-1). Если не сложно, напишите, что не так в коде... https://github.com/Drunya2/BattleShip/blob/master/...
Вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку и минимальный код для её воспроизведения прямо в вопросе.
Сергей Горностаев, Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:907)
at java.util.ArrayList$Itr.next(ArrayList.java:857)
at Module8.Praktika.Battle.createAndStartShips(Battle.java:56)
at Module8.Praktika.Battle.main(Battle.java:97)
for (Thread thread : threads) {
synchronized (threads) {
if (threads.contains(thread) && !thread.isInterrupted())
thread.start();
}
}
Как минимум, при многопотоке использовать непотокобезопасную коллекцию ArrayList это не правильное, потому вы и получаете ConcurrentModificationException. Вот неплохой обзор Concurrent Collections