ConcurrentHashMap HashMap HashTable区别

ConcurrentHashMap    HashMap  HashTable

HashTable 比HashMap低  因为线程安全  要比较同步锁


HashTable   1丶是一个包含单向链的二维数组,table数组中是entry《K,V》存储,entry对象

                     2丶Values不能为空

                    3丶 线程安全    所有的方法均包含 synchronized 修饰

HashMap  1   相当于Hashtable升级版

                    2     可以放入空值

                   3        基于Hash表(根据关键码值直接进行访问数据结构 )  

                    4     线程不安全

ConCurrentHashMap :   synchronized 是针对整张Hash表,即每次锁住整张表让线程独占,线程安全的背后是巨大的浪费

TreeMap  1  有序的存储

                2  自己可以排序    让key值 的类  实现comparable接口


为什么我们需要ConcurrentHashMap和CopyOnWriteArrayList

同步的集合类(Hashtable和Vector)

同步的封装类(使用Collections.synchronizedMap()方法和Collections.synchronizedList()方法返回的对象)可以创建出线程安全的Map和List



ConcurrentHashMap和Hashtable的区别

Hashtable的大小增加到一定的时候,性能会急剧下降,因为迭代时需要被锁定很长的时间。因为ConcurrentHashMap引入了分割(segmentation),不论它变得多么大,仅仅需要锁定map的某个部分,而其它的线程不需要等到迭代完成才能访问map。简而言之,在迭代的过程中,ConcurrentHashMap仅仅锁定map的某个部分,而Hashtable则会锁定整个map

你可能感兴趣的:(ConcurrentHashMap HashMap HashTable区别)