hashmap和concurrenthashmap的区别是什么?
由化工方面的博士、教授和企业的高级技术人员与管理人员创建的高科技化工企业。主要从事下列产品的开发、生产和相关的技术服务:
▼高纯电子化学品(主要为高纯季铵碱 )
▼季铵碱系列
▼季铵盐系列
▼季膦化合物系列
▼相转移催化剂(PTC)
▼均苯四甲酸 (PMA)
▼均苯四甲酸二酐( 均酐,PMDA)
▼其他精细化学品
具有较强的仪器和化学分析能力,拥有离子色谱、极谱、液相色谱、气相色谱、分光光度计等检测仪,从产品开发到车间生产进行全过程质量跟踪分析与控制,确保产品质量满足顾客要求。
公司宗旨:
▼求真务实
▼技术革新
▼持续改进
▼客户满意 (PTC)
▼保护环境
▼可持续发展
我们竭诚为广大客户提供“优质服务、一流品质、合理价格”。真诚地期待与国内外客户建立良好的交流和合作关系!
hashmap和concurrenthashmap的区别如下:
HashMap不是线程安全的,而ConcurrentHashMap是线程安全的。
ConcurrentHashMap采用锁分段技术,将整个Hash桶进行了分段segment,也就是将这个大的数组分成了几个小的片段segment,而且每个小的片段segment上面都有锁存在。
那么在插入元素的时候就需要先找到应该插入到哪一个片段segment,然后再在这个片段上面进行插入,而且这里还需要获取segment锁。
ConcurrentHashMap让锁的粒度更精细一些,并发性能更好。
HashMap:
底层数组+链表实现,可以存储null键和null值,线程不安全。
初始size为16,扩容:newsize = oldsize*2,size一定为2的n次幂。
扩容针对整个Map,每次扩容时,原来数组中的元素依次重新计算存放位置,并重新插入。
插入元素后才判断该不该扩容,有可能无效扩容(插入后如果扩容,如果没有再次插入,就会产生无效扩容)。
ConcurrentHashMap:
底层采用分段的数组+链表实现,线程安全。
通过把整个Map分为N个Segment,可以提供相同的线程安全,但是效率提升N倍,默认提升16倍。(读操作不加锁,由于HashEntry的value变量是 volatile的,也能保证读取到最新的值。)。
Hashtable的synchronized是针对整张Hash表的,即每次锁住整张表让线程独占,ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。
2024-11-19 广告