... я должен синхронизировать все Список и Карты?
Нет, вы не должны.Синхронизация вещей, которые не нужны, это пустая трата ресурсов.И для вещей, которые действительно нуждаются в синхронизации, вы должны сделать это правильно.(И оболочки synchronizedXxx
не всегда верны.)
Во-первых, вам необходимо определить структуры данных, которые будут видны нескольким потокам.Структуры данных, которые доказуемо ограничены потоками, вообще не нуждаются в синхронизации.
Во-вторых, вам нужно изучить способ использования структур данных, чтобы увидеть, достаточно ли оболочки synchronizedXxx
.Например, эти оболочки не синхронизируют итерацию, и вы можете столкнуться с проблемами, если один поток изменяет коллекцию, а другой выполняет итерацию.
Наконец, вам нужно подумать о том, сильно ли синхронизированы структуры данных.используется разными темами.Оболочки synchronzedXxx
могут привести к узким местам производительности, если структура данных интенсивно используется.Если это так, вам следует рассмотреть возможность использования одного из классов ConcurrentYyyy
.