首页 > 编程知识 正文

concurrenthashmap继承自谁,concurrenthashmap数据结构

时间:2023-05-05 08:34:24 阅读:43997 作者:90

concurrent map1. concurrent hashmap设计为无阻塞,更新时会锁定某些数据。 不会锁定整个表。 同步读取未完全阻止。 在保证合理同步的基础上很有效率。 坏处不能保证对最近的更新做出反应。 例如,如果线程a调用putAll以写入大量数据,而线程b在此期间调用get,则只能获取到目前为止成功插入的数据。

2 .在JDK 1.8版中,ConcurrentHashMap的数据结构接近hashmap,而ConcurrentHashMap只是添加了同步操作以控制并发。

在JDK1.7中使用的ReentrantLock (重新锁定)分段) HashEntry

JDK1.8中使用的同步cas hash entry红黑树

升级原因:

1.JDK1.8的实现降低了锁的粒度。 JDK1.7的粒度基于segment,包含多个散列条目。 JDK1.8基于散列条目

2 .数据结构的变更。 JDK1.8正在同步中进行同步。 不需要分段锁定的概念

3.JDK1.8使用红黑树优化链表。 长链表用红黑树提高效率。

4 .为什么4.JDK1.8使用同步而不是永久锁定

1 .粒度降低,对于低粒度,同步效率不比Reentrantlock差。 2 .同步使用嵌入关键字比使用API更自然。 3 .在大量数据下,对于JVM内存压力,基于API的ReentrantLock会开销更多的内存。 hashtable hashtable的任何操作都会锁定和阻止整个表。 好处是可以看到最新的数据。 缺点:所有操作都需要排队,效率很低。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。