Back to questions
Junior — Middle
62
Можешь назвать и описать вместе с примером наиболее распространённые потокобезопасные коллекции в языке Java?
Companies where asked
Prooftech
Answer from AI
sobes.tech AI
В Java для работы с потокобезопасными коллекциями чаще всего используются классы из пакета java.util.concurrent и обёртки из Collections.synchronizedXXX(). Вот наиболее распространённые:
- ConcurrentHashMap — потокобезопасная версия HashMap, позволяющая нескольким потокам читать и писать без блокировки всей карты. Использует сегментирование для повышения производительности.
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.put("key", 1);
int value = map.get("key");
- CopyOnWriteArrayList — потокобезопасный список, который при изменениях (добавлении, удалении) создаёт копию внутреннего массива. Хорош для сценариев с частыми чтениями и редкими изменениями.
CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
list.add("element");
String elem = list.get(0);
- BlockingQueue (например, LinkedBlockingQueue) — потокобезопасная очередь с блокирующими операциями, полезна для организации очередей задач между потоками.
BlockingQueue<String> queue = new LinkedBlockingQueue<>();
queue.put("task");
String task = queue.take();
- Collections.synchronizedList() — обёртка над обычным списком, синхронизирующая все методы для потокобезопасности.
List<String> syncList = Collections.synchronizedList(new ArrayList<>());
syncList.add("item");
Эти коллекции помогают избежать проблем с конкурентным доступом без необходимости вручную писать синхронизацию.