Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Thread и ArrayList / 4 сообщений из 4, страница 1 из 1
18.02.2012, 06:01:30
    #37668234
GorloPavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Thread и ArrayList
Здравствуйте. Требуется совет. В многопоточной программе существует ArrayList... Проблема в том, что один поток а какой-то момент может удалять элемент из коллекции, другой перебирать элементы в цикле foreach... Возникает проблема когда один поток удаляет элемент, а второй в этот момент читает его поля. Программа падает в "java.util.ArrayList$Itr.checkForComodification". Заранее огромное спасибо!
...
Рейтинг: 0 / 0
18.02.2012, 07:55:44
    #37668243
bochkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Thread и ArrayList
Код: java
1.
List aList = Collections.synchronizedList(new ArrayList());


или Vector
...
Рейтинг: 0 / 0
18.02.2012, 15:34:54
    #37668485
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Thread и ArrayList
GorloPavel,

По моему единственная реализация при которой не будет ConcurrentModificationException при итерации - это CopyOnWriteArrayList.
...
Рейтинг: 0 / 0
18.02.2012, 15:47:14
    #37668491
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Thread и ArrayList
GorloPavel,

Ну а если насчет "Здравствуйте. Требуется совет", то возможно лучшим решением будет добавленлие дополнительной синхронизации при итерациях, примерно так:
Код: java
1.
2.
3.
4.
5.
6.
List elements = new ArrayList();
synchronized (elements) {
    for (Object element : elements) {

    }
}
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Thread и ArrayList / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]