ConcurrentHashMap小总结

一、诞生之初

ConcurrentHashMap的目标是实现高并发,高吞吐量的hashmap。(引用自:https://www.jianshu.com/p/bf5926b6dcde

二、解决的问题

要实现高并发、高吞吐量,要解决两个问题:性能和保证线程安全

  • 为了线程安全,链表/红黑树,是必须得加锁的;(否则导致指针的关系错乱)
  • 为了性能,对共享资源的操作,“一句话”/“一行代码”能完成的,用CAS;“多行代码”才能完成的,用synchronized同步块;
  • 为了性能,细化了锁粒度;(16 -> 1)
  • 为了性能,多线程帮助扩容;

三、CAS小总结

1. 真身

CMPXCHG汇编指令,原子指令。

2. 使用模式

  • 无限循环;
  • 期望值;
while(!setFlag){
    value = getValue();
    if (compareAndSetInteger(expValue, value, value++)){
        setFlag = true;
    }
}

3. vs 重量级锁

官方一点讲,相对于重量级锁,CAS的使用模式,减少了线程状态切换的消耗,有性能优势。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值