23-运用线程安全的HashMap
7.7 运用线程安全的HashMap
散列表是一种允许用key映射到value的数据结构。进一步来说,它通常用一个数组来存储元素,并用散列函数来计算元素的key在数组中的对应位置。因为该数据结构有非常快速的插入、删除和查询操作,所以它在许多处理查询操作的场景下非常有用。
Java API在 Map
和 ConcurrentMap
接口上提供了不同的散列表实现。 ConcurrentMap
接口提供了线程安全和保证原子性的全部操作,因此它可以在并发程序中使用。 Concurrent HashMap
类实现了 ConcurrentMap
接口,并且增添了更多接口以外的方法。该类可以支持:
- 完全并发读操作;
- 高度符合预期的并发插入和删除操作。
无论是类还是接口,Java 5都已经提供了,但是Java 8开发了很多由Stream API提供的新方法。
本节将介绍如何在应用中使用 ConcurrentHashMap
类中大部分的重要方法。