ConcurrentHashMap详解

背景

HashMap不是线程安全的。当我们说一个类不是线程安全的,准确意思是说:在多个线程都会访问到这个类的情况下,如果不做特殊处理(比如线程同步等),这个类的数据会被不正确的修改(修改出脏数据)或不正确的读取(读取不到最新值)。

HashMap中有成员变量Node<K,V> table,但是其put、remove等操作均没有任何加锁操作,这必然无法保证线程安全。

而HashTable、Collections.SynchronizedMap虽然都是线程安全的,但是实现线程安全的方式有些简单粗暴,要么就是将方法变为synchronied方法,要么就是在方法里面加synchronized同步块,这样的做法是虽然通过线程同步保证了数据安全,但是有些粗暴,一刀切。简而言之就是,不管你是来访问哈希表里面什么位置的数据的,通通以该哈希表为锁,一个一个地来。

分段锁的思想

熟悉哈希表结构的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值