В этой лекции разберём, почему обычные коллекции (
ArrayList,
HashMap) опасны в многопоточной среде, и какие потокобезопасные альтернативы предлагает пакет
java.util.concurrent:
ConcurrentHashMap,
CopyOnWriteArrayList,
ConcurrentLinkedQueue, структуры на skip-list и
BlockingQueue. Обсудим атомарные операции вроде
merge,
putIfAbsent,
computeIfAbsent, сравним с
Collections.synchronizedMap, рассмотрим практические примеры и типичные ошибки (слабоконсистентные итераторы, неатомарные последовательности операций и др.).