ConcurrentMap并发映射

时间:2020-01-09 10:36:25  来源:igfitidea点击:

" java.util.concurrent.ConcurrentMap"接口表示一个Map,该Map能够处理对其的并发访问(放置和获取)。

ConcurrentMap除了从其超级接口java.util.Map继承的方法外,还具有其他一些原子方法。

ConcurrentMap实现

由于ConcurrentMap是一个接口,因此我们需要使用其实现之一才能使用它。 java.util.concurrent包包含ConcurrentMap接口的以下实现:

  • ConcurrentHashMap

并发哈希映射

ConcurrentHashMap与java.util.HashTable类非常相似,不同之处在于ConcurrentHashMap比HashTable具有更好的并发性。从中读取时,ConcurrentHashMap不会锁定Map。另外,ConcurrentHashMap在写入时不会锁定整个Map。它仅在内部锁定" Map"的写入部分。

另一个区别是,如果在迭代时更改了ConcurrentHashMap,则ConcurrentHashMap不会引发ConcurrentModificationException。但是,Iterator不能被多个线程使用。

请查看官方JavaDoc以获取有关ConcurrentMapConcurrentHashMap的更多详细信息。

ConcurrentMap示例

这是一个如何使用ConcurrentMap接口的例子。该示例使用ConcurrentHashMap实现:

ConcurrentMap concurrentMap = new ConcurrentHashMap();

concurrentMap.put("key", "value");

Object value = concurrentMap.get("key");