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