Я стараюсь избегать ConcurrentModificationException
, где функциональность заключается в итерации по расширяющемуся набору (нет удалений), а операции добавления выполняются различными потоками.
Я подумал о клонировании коллекции перед итерацией, но если это решение не очень хорошо масштабируется, набор становится большим.Синхронизация не работает, потому что коллекция используется во многих местах, а код довольно старый.Если не считать масштабного рефакторинга, единственная ставка - изменить реализацию набора.
Интересно, есть ли реализация Java, в которой итератор возвращает состояние снимка коллекции (что нормально для моей функциональности), но избегает затрат?клонировать слишком много.Я проверил CopyOnWriteArrayList
, но он не отвечает всем требованиям в основном из-за того, что он список.