Запись в лист в два и более потока
Добрый день. Интересует простой пример на Java как организовать мультипоточную запись/чтение из коллекции. Спасибо
Источник: Stack Overflow на русском
Добрый день. Интересует простой пример на Java как организовать мультипоточную запись/чтение из коллекции. Спасибо
Проще всего, вероятно, воспользоваться синхронизированными коллекциями:
List<C> list = Collections.synchronizedList(new ArrayList<C>());
Запись и чтение получатся автоматически синхронизированными, вы можете свободно работать из разных потоков. Это, однако, касается лишь добавления/удаления: обращение по индексу или итерирование требует синхронизации:
list.add(new C());
synchronized (list) {
Iterator i = list.iterator();
while (i.hasNext())
// работаем с i.next()
}