微博wap版登录入口,seo 网站标题长度,大兴模版网站搭建哪家好,网络营销过程步骤ConcurrentHashMap ConcurrentHashMap的整体架构ConcurrentHashMap的基本功能ConcurrentHashMap在性能方面的优化 concurrentHashMap#xff1a; ConcurrentHashMap的整体架构
concurrentHashMap是由数组链表红黑树组成 当我们初始化一个ConcurrentHashMap实例时#xff0c… ConcurrentHashMap ConcurrentHashMap的整体架构ConcurrentHashMap的基本功能ConcurrentHashMap在性能方面的优化 concurrentHashMap ConcurrentHashMap的整体架构
concurrentHashMap是由数组链表红黑树组成 当我们初始化一个ConcurrentHashMap实例时默认会初始化一个长度为16的数组。 当发生hash冲突时会使用链式方式解决。 当链式长度大于8且数组长度大于64 并且负载因子达到0.75的时候链表会转成红黑树。 随着concurrentHashMap的动态扩容一旦链表长度小于8红黑树会退化成单向链表。
ConcurrentHashMap的基本功能
ConcurrentHashMap本质就是一个hashMap因此功能和HashMap一样但是ConcurrentHashMap在HashMap的基础上提供了并发安全的实现。
并发安全的主要实现是通过对指定的Node节点加锁来保证数据更新的安全性
ConcurrentHashMap在性能方面的优化
如果在并发性能和数据安全之间做好平衡在很多地方都有类似的设计比如cpu的三级缓存mysql的buffer_pool,synchronzie的锁升级等。 ConcurrentHashMap优化 1在jdk1.8中concurrentHashMap锁的粒度是数组中的某一个节点而在JDK1.7中锁定的是segment锁的范围更大因此性能会更低。 2引入了红黑树降低了数据查询的时间复杂度Ologn 3当数组长度长度不够时ConcurrentHashMap会对数组进行扩容在扩容的实现上ConcurrentHashMap引入了多线程并发扩容机制。 简单来说就是多线程对原是数组进行分片后每个线程负责一个分片的数据迁移从而提升了扩容过程中的数据迁移效率 4concurrentHashMap中有一个Size方法来获取总的元素个数在多线程并发场景中在保正原子性的情况下实现元素个数的累加性能时非常低的。 当并发不高时直接采用CAS实现元素个数的原子递增。 如果线程竞争激烈使用一个数组来维护元素个数如果要增加总的元素个数则直接从数组中随机取一个在通过CAS实现原子递增他的核心思想是引入数组来实现对并发更新的负载