一、ConcurrentHashMap是什么?
ConcurrentHashMap是线程安全的并发容器,是用来替代在多线程环境下的HashMap,因为HashMap是线程不安全的,多线程环境下put操作可能会导致死循环,CPU利用率上升到100%。虽然有同步容器Hashtable和Collections.synchronizedMap方法使得容器同步,但是这些容器效率都非常低,因为它们锁的是整个容器,而ConcurrentHashMap采用的是分段锁,将同一个容器的划分为好多段,某个线程执行某些操作只会获取一个段的锁,而不会影响其他线程获取其他锁的段。
二、ConcurrentHashMap的结构。
ConcurrentHashMap把整个容器很为许多个Segment(段),段数就是并发度,每个Segment类似于一个Hashtable,管理一个HashEntry数组,每个HashEntry是一个链表头,或者红黑树的根,其实Segment的数据结构类似于HashMap,学过HashMap的底层原理就更加容易理解ConcurrentHashMap,HashMap原理讲解链接点击打开链接。
分段锁具体体现在哪里?