ConcurrentModificationException несмотря на синхронизируемое использование

Это - хороший подход для сохранения сценариев базы данных в управление версиями со сценариями изменения так, чтобы можно было обновить любую базу данных, которую Вы имеете. Также Вы могли бы хотеть сохранить схемы для различных версий так, чтобы можно было создать полную базу данных, не имея необходимость применять все сценарии изменения. Обработка сценариев должна быть автоматизирована так, чтобы Вы не делали физического труда.

я думаю, что ее важное имеет отдельную базу данных для каждого разработчика и не использует общую базу данных. Тем путем разработчики могут создать тестовые сценарии и этапы разработки независимо от других разработчиков.

инструмент автоматизации должен иметь средства для обработки метаданных базы данных, которые говорят, какие базы данных находятся в том, какое состояние разработки и какие таблицы содержат версию управляемые данные и так далее.

15
задан Raedwald 22 January 2016 в 15:55
поделиться

1 ответ

ConcurrentModificationException обычно не имеет ничего общего с несколькими потоками. В большинстве случаев это происходит из-за того, что вы изменяете коллекцию, по которой выполняется итерация в теле цикла итерации. Например, это вызовет его:

Iterator iterator = collection.iterator();
while (iterator.hasNext()) {
    Item item = (Item) iterator.next();
    if (item.satisfiesCondition()) {
       collection.remove(item);
    }
}

В этом случае вы должны использовать вместо него метод iterator.remove () . Это также происходит, если вы добавляете в коллекцию, и в этом случае нет общего решения. Однако подтип ListIterator может использоваться при работе со списком, и у него есть метод add () .

39
ответ дан 1 December 2019 в 00:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: