JAVA.util.concurrent.ConcurrentMap代表着可以并发访问(存和取元素)的 Map .
ConcurrentMap在继承了java.util.Map父接口的基础上额外增加了一些原子方法。
既然ConcurrentMap是个接口, 如果需要用它则需要实现这个接口。java.util.concurrent包含了ConcurrentMap 的实现:
ConcurrentHashMap 和java.util.HashTable 类非常相似, 除了ConcurrentHashMap的并发性比 HashTable更好. ConcurrentHashMap取元素的时候不加锁. 另外, ConcurrentHashMap 写元素的时候不锁整个 Map . 当写入的时候Map内部只锁了一部分.
另外的不同是, ConcurrentHashMap 当在迭代时被修改不会抛出 ConcurrentModificationException. 不过,Iterator 不是为多个线程设计的。
下面是如何使用 ConcurrentMap 的例子. 例子用了 ConcurrentHashMap实现:
ConcurrentMap concurrentMap = new ConcurrentHashMap();
concurrentMap.put("key", "value");
Object value = concurrentMap.get("key");
参考翻译:http://tutorials.jenkov.com/java-util-concurrent/concurrentmap.html