ConcurrentHashMap的使用场景

先大概的说一下几个map的区别:

hashMap:读取快,插入慢,线程不安全

LinkedHashMap:读取快,插入慢

treeMap:排序

concurrentHashMap:线程安全,支持高并发的操作

当项目中的全局变量有多线程操作时需要用concurrentHashMap,若只是单线程则可以使用hashmap。

在多线程环境下使用hashMap会造成的问题:

hashMap,底层是数组+链表 结构,当两个线程同时插入需要扩容的时候,获得改map的size()大小不一样,则会报错。当有两个线程在读,第三个线程正好在对map扩容时,这两个线程就会进入死循环,cup占用率就会高。

concurrentHashMap,线程安全,读写快,底层实现是一种以空间换时间的结构,创建的时候直接分了16个segment,每个segment实际上存储的还是哈希表,写入的时候先找到对应的segment,然后对segment加锁,写完,解锁。锁segment的时候其他segment还可以继续工作。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值