1,ConcurrentHashMap是线程安全且高效的HashMap
2,为什么要使用ConcurrentHashMap?
因为在多线程环境下,使用HashMap进行put操作会引起死循环。HashTable使用synchronized来保证线程安全。但是在线程竞争激烈的情况下。HashTable的效率是很低的。
3ConcurrentHashMap的锁分段技术
4,ConcurrentHashMap的get操作
·get操作非常高效,因为不需要加锁,因为共享变量全部定义成volatile,能够被多线程读,且保证不读到过期的值
5,ConcurrentHashMap的put操作
在操作共享变量时必须加锁。首先定位Segment,然后进行插入。会先判断是否对HashEntry扩容
6,ConcurrentHashMap的size操作
会使用modcount记录put,clear,modify的操作,先尝试两次不加锁的累加每个segment里面的数组长度,如果modcount没变化,即可以不锁定put,clear,modify,实现累加计算出size大小。