Start here. This is the direct spoken answer to practice first.
Overview
A concurrent collection makes documented operations safe during concurrent access, but callers still need an atomic application-level protocol.
ConcurrentHashMap supports concurrent reads and updates without one global lock around every operation. Methods such as putIfAbsent, compute, and merge provide atomic operations for a key and are safer than a separate check followed by a write. Its iterators are weakly consistent: they do not throw ConcurrentModificationException and may reflect some updates during traversal. Null keys and values are not allowed.