Concurrent包HashMap、HashTable、ConcurrentMap

ConcurrentMap:并发映射

HashMap

`  基于hash表进行存储的映射。异步式线程不安全的映射—没有同步锁机制,多个线程访问的时候会有数据不明确的问题。
`  虽然不安全,但是效率高。
`  底层以数组+链表结构存储。
`  底层数组初始大小:16

HashTable

`  同步式线程安全的映射。对外提供的方法大部分都是同步方法。如果同步方法是非静态,那么锁对象是this;如果同步方法是静态方法,那么锁对象是当前类的字节码。所以HashTable使用时是将整个映射进行锁定,意思就是只要有一个线程成功操作hashtable,那么这么线程就锁定hashtable,其他的线程就不能锁定了。
`  保证同步,保证线程安全,但是因为锁定的是整个映射,所以效率不高。比如多个线程都是.get()读操作,效率很低。
`  底层以数组+链表结构存储。
`  底层数组初始大小:11

ConcurrentHashMap

`  异步式线程安全的映射。JDK1.5开始,采取了分段锁/分桶锁。问题:程序时间空间开销大,锁需要上下文切换,线程调度等问题。所以从JDK1.8开始,采取CAS算法+红黑树结构,进行存储和保证效率。
`  底层以数组+链表结构存储。数组中的每个位置称为桶buckets,每个桶中维系一个链表,链表中的每个节点存储键、值、上个节点的地址、下个节点的地址。
`  底层数组初始大小:16

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值