ConcurrentHashMap 初认识

来源:互联网 发布:黑帽seo软件 编辑:程序博客网 时间:2024/05/27 00:32

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大小。

0 0