Помните о нескольких вещах, чтобы избежать проблем одновременного доступа:
Прежде всего метод (startAnalysis) является методом экземпляра.Поэтому синхронизация будет зависеть от его экземпляра.Поэтому вам нужно убедиться, что все потоки, пытающиеся получить доступ к этому методу, должны использовать один и тот же экземпляр, чтобы избежать проблем одновременного доступа.Если каждый поток ссылается на отдельный экземпляр, то всем потокам будет разрешено выполнить метод, что в конечном итоге может привести к проблемам с параллелизмом.
Во-вторых, всегда следует предпочитать использовать Iterator, а не цикл for: eachперебирать коллекции, чтобы избежать одновременных проблем доступа / модификации.
Также вы можете использовать классы api для одновременной коллекции, чтобы избежать проблем с параллелизмом.Эти классы интенсивно используются в таких требованиях, чтобы избежать одновременных проблем модификации.
Надеюсь, это поможет.