<返回更多

JAVA多线程-ConcurrentMap

2020-07-22    
加入收藏

JAVA.util.concurrent.ConcurrentMap代表着可以并发访问(存和取元素)的 Map .

ConcurrentMap在继承了java.util.Map父接口的基础上额外增加了一些原子方法。

ConcurrentMap实现

既然ConcurrentMap是个接口, 如果需要用它则需要实现这个接口。java.util.concurrent包含了ConcurrentMap 的实现:

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

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍最近更新
更多资讯 >>>