Перво-наперво, это не проблема Spring.Это просто проблема с одновременной модификацией одного, не столь параллельного, класса ArrayList
.
Самым простым решением было бы синхронизировать доступ к методу, который его модифицирует.
public synchronized void flush(Audit... audits) { }
Имейте в виду, что он обеспечит последовательное выполнение метода flush
, что влечет за собой огромные потери производительности.
Sidenote, недостаточно синхронизировать саму коллекцию с помощью Collections.synchronizedList
- экземпляры итератора, возвращаемые синхронизированными оболочками, требуют ручной синхронизации.