Sobes.tech
Back to questions
Junior — Middle
62

Можешь назвать и описать вместе с примером наиболее распространённые потокобезопасные коллекции в языке Java?

Companies where asked
Prooftech

Answer from AI

sobes.tech AI

В Java для работы с потокобезопасными коллекциями чаще всего используются классы из пакета java.util.concurrent и обёртки из Collections.synchronizedXXX(). Вот наиболее распространённые:

  1. ConcurrentHashMap — потокобезопасная версия HashMap, позволяющая нескольким потокам читать и писать без блокировки всей карты. Использует сегментирование для повышения производительности.
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.put("key", 1);
int value = map.get("key");
  1. CopyOnWriteArrayList — потокобезопасный список, который при изменениях (добавлении, удалении) создаёт копию внутреннего массива. Хорош для сценариев с частыми чтениями и редкими изменениями.
CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
list.add("element");
String elem = list.get(0);
  1. BlockingQueue (например, LinkedBlockingQueue) — потокобезопасная очередь с блокирующими операциями, полезна для организации очередей задач между потоками.
BlockingQueue<String> queue = new LinkedBlockingQueue<>();
queue.put("task");
String task = queue.take();
  1. Collections.synchronizedList() — обёртка над обычным списком, синхронизирующая все методы для потокобезопасности.
List<String> syncList = Collections.synchronizedList(new ArrayList<>());
syncList.add("item");

Эти коллекции помогают избежать проблем с конкурентным доступом без необходимости вручную писать синхронизацию.