Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
java.util.concurrent
包中包含许多 Java 集合框架的附加内容。这些最容易通过提供的集合接口进行分类:
BlockingQueue
定义了一个先进先出的数据结构,当你尝试往满队列中添加元素,或者从空队列中获取元素时,将会阻塞或者超时。ConcurrentMap
是 java.util.Map
的子接口,用于定义有用的原子操作。仅当 key 存在时,才会移除或替换键值对,或仅在 key 不存在时才添加键值对。使这些操作原子化有助于避免同步。ConcurrentMap
的标准通用实现是 ConcurrentHashMap
,它是 HashMap
的并发模拟。ConcurrentNavigableMap
是 ConcurrentMap
的子接口,支持近似匹配。ConcurrentNavigableMap
的标准通用实现是 ConcurrentSkipListMap
,它是 TreeMap
的并发模拟。所有这些集合通过定义将对象添加到集合的操作与访问或移除该对象的后续操作之间的 happens-before 关系来帮助避免 Memory Consistency Errors。