ConcurrentHashMap详解

HashMap在多线程环境下不是线程安全的,而ConcurrentHashMap通过分段锁和volatile提高并发效率。它使用分段锁策略,降低线程冲突概率,仅在写写操作时才发生线程同步,读读和读写不互斥,从而实现高效并发。
摘要由CSDN通过智能技术生成

背景

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值