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