ConcurrentHashMap源码解读
首先ConcurrentHashMap不允许key和value为null。

     ConcurrentHashMap之所以可以做到高并发是因为ConcurrentHashMap内部分成了多个segment(类似于子map),只会对segment加锁,并不会整个ConcurrentHashMap 加锁。CONCURRENCY_LEVEL默认分成16个segment。可以在构造函数中指定大小。大致逻辑如下,以put为例说明。
     根据hash值 算出key所在的segment(return segments [(hash >>> segmentShift) & segmentMask],其中segmentShift =log2(CONCURRENCY_LEVEL))。获得的segment类似于一个hashMap。然后在算出segment中key的位置(int index = hash & ( tab. length - 1);)。
     性能分析:最好能够初始化时估算好ConcurrentHashMap的大小,如果一开始设置容量太小,后续容易频发发生rehash,影响性能。
阅读更多
想对作者说点什么? 我来说一句

jQuery源码解读

2010年05月24日 147KB 下载

没有更多推荐了,返回首页

不良信息举报

ConcurrentHashMap源码解读

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭