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