У меня есть списки массивов, в которых хранится много объектов, и объекты часто добавляются и удаляются из списков массивов. Один поток работает со структурами данных и обновляет объекты ArrayList каждые 20 мс или около того. Другой поток просматривает списки ArrayLists и использует их элементы для рисования объектов (также каждые 20-30 мс).
Если обход ArrayLists выполняется с помощью цикла for, исключений IndexOutOfBoundsExceptions очень много. Если ArrayLists просматривается с помощью итераторов, ConcurrentModificationExceptions изобилует. Синхронизация списков ArrayLists выглядит так:
List list = Collections.synchronizedList(new ArrayList());
synchronized(list) {
//use iterator for traversals
}
Не вызывает исключений, но существенно снижает производительность. Есть ли способ пройти по этим спискам ArrayList без исключения исключений и без потери производительности?
СПАСИБО!