结合“锁”性能学习并发集合

本文探讨了如何通过减少锁粒度、读写分离、减少锁持有时间和锁分离来优化锁的性能,并以ConcurrentHashMap、CopyOnWriteArrayList和LinkedBlockingQueue为例,展示了并发集合在Java中的应用。同时,文章还提到了锁粗化这一优化策略,提醒读者在实际场景中灵活权衡。
摘要由CSDN通过智能技术生成

“锁”的竞争必然会导致程序性能急剧下降,常见的提高“锁”性能有以下一些建议。我们根据“锁”的优化来顺便学习一下并发集合(java.util.concurrent包下的部分集合类)


1.减少锁粒度

所谓减少锁粒度,就是指缩小锁定对象的范围,从而减少锁冲突的可能性,进而提高系统的并发能力。

我们来了解一下ConcurrentHashMap 类怎么实现减小锁粒度的:

    通过分析Hashtable就知道,synchronized是针对整张Hash表的,即每次锁住整张表让线程独占,ConcurrentHashMap允许多个修改操作并发进行,ConcurrentHashMap 使用了多个锁来控制对hash表的不同部分进行的修改。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,一个ConcurrentHashMap被进一步细分为16个小段,每个段其实就是一个小的hash table,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行。

但是减少锁粒度会带来新的问题,那就是,当系统获取全局信息时,其消耗会比较多,当我们试图获取ConcurrentHashMap全局信息时&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值