Исключение ConcurrentModificationException не имеет ничего общего с параллелизмом в той форме, о которой вы думаете.Это просто означает, что во время итерации по Коллекции кто-то (возможно, ваш собственный код - это происходит достаточно часто;)) меняет его, то есть добавляет / удаляет некоторые значения.
Убедитесь, что вы используете Итератор дляудалить значения из коллекции, а не саму коллекцию.
Редактировать: Если действительно другой поток одновременно получает доступ к Коллекции, слабая синхронизация, которую вы получаете из стандартной библиотеки, в любом случае бесполезна, так как вы должны заблокировать Коллекцию на все время операции.не только для одного добавить / удалить!Т.е. что-то вроде
synchronize(collection) {
// do stuff here
}