Найти тему
81 подписчик

❓Что такое синхронизированные коллекции в Java и как они работают ❓


Коллекции Collection представляют собой группу объектов, а Java предоставляет несколько интерфейсов и реализаций для работы с этими коллекциями.

С появлением многопоточного программирования возросла потребность в потокобезопасных коллекциях. Именно тогда в структуру Java Collection были добавлены синхронизированные коллекции.

❓Как синхронизированные коллекции обеспечивают потокобезопасность ❓

Синхронизированные коллекции Synchronized Collections обеспечивают потокобезопасность за счет принудительной синхронизации каждого из общедоступных методов. Кроме того, это гарантирует, что его внутреннее состояние никогда не будет опубликовано. То есть, единственный способ изменить коллекцию — это использовать ее общедоступные синхронизированные методы!

Синхронизированные коллекции можно представить, как простые несинхронизированные коллекции с инкапсуляцией состояния и синхронизированными общедоступными методами.

Поскольку одна и та же (внутренняя) блокировка защищает каждый общедоступный метод синхронизированной коллекции, какие-либо два потока не могут изменять/читать коллекцию одновременно.

❓Как создавать синхронизированные коллекции ❓

Класс Collections предоставляет несколько статических методов для создания синхронизированных коллекций. Эти статические методы имеют имена в следующем формате — synchronizedXxx. Вот список этих методов:
*️⃣synchronizedCollection(Collection<T> c)
*️⃣synchronizedList(List<T> list)
*️⃣synchronizedMap(Map<K, V> m)
*️⃣synchronizedNavigableMap(NavigableMap<K, V> m)
*️⃣synchronizedNavigableSet(NavigableSet<T> s)
*️⃣ synchronizedSet(Set<T> s)
*️⃣synchronizedSortedMap(SortedMap<K, V> m)
*️⃣synchronizedSortedSet(SortedSet<T> s)

Теперь мы создадим синхронизированный список, используя класс Collections.
List<Integer> synchronizedIntegerList = Collections.synchronizedList(new ArrayList<>());

🔘Подробнее про синхронизированные коллекции можно прочитать тут

❓Что такое синхронизированные коллекции в Java и как они работают ❓  Коллекции Collection представляют собой группу объектов, а Java предоставляет несколько интерфейсов и реализаций для работы с этими
1 минута