并发编程核心——十二、并发类容器

JDK 5.0 以后提供了多种并发类容器来替代同步类容器从而改善性能。同步类容器的 状态都是串行化的。他们虽然实现了线程安全,但是严重降低了并发性,在多线程环境时, 严重降低了应用程序的吞吐量。

并发类容器是专门针对并发设计的,使用 ConcurrentHashMap 来代替给予散列的传 统的 HashTable,而且在 ConcurrentHashMap 中,添加了一些常见复合操作的支持。以 及使用了 CopyOnWriteArraylist 代替 Voctor,并发的 CopyOnWriteArraySet。
以及 并发的 Queue,ConcurrentLinkedQueue 和 LinkedBlockingQueue,前者是高性能的队 列,后者是以阻塞形式的队列,具体实现 Queue 还有很多,例如 ArrayBlockingQueue、 PriorityBlockingQueue、SynchronousQueue 等。

12.1、ConcurrentHashMap

由于 HashMap 是线程不同步的,虽然处理数据的效率高,但是在多线程的情况下存在 着安全问题,因此设计了 CurrentHashMap 来解决多线程安全问题。 HashMap 在 put 的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是 rehash,这个会重新将原数组的内容重新 hash 到新的扩容数组中,在多 线程的环境下,存在同时其他的元素也在进行 put 操作,如果 hash 值相同,可能出现同时 在同一数组下用链表表示,造成闭环,导致在 get 时会出现死循环,所以 HashMap 是线程 不安全的。

JDK7 下的 ConcurrentHashMap</

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值