Junior — Middle
100
Poți să numești și să descrii împreună cu un exemplu cele mai comune colecții sigure pentru fire în Java?
Companiile au fost întrebate
Prooftech
Răspuns de la 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");
Эти коллекции помогают избежать проблем с конкурентным доступом без необходимости вручную писать синхронизацию.