HashTable和ConcurrentHashMap的区别

HashTable和ConcurrentHashMap的区别

HashTable

HashTable是线程安全的,对关键方法都提供了sunchronized, 相当于针对this加锁.
这里也会出现一些问题?

当我们去任意的针对对象进行操作,都会涉及到对this的加锁.此时此刻,有很多线程
都想操作对象,就一定会出发激烈的锁竞争,最后只能排队一个一个执行,并发效率非常低效.

ConcurrentHashMap

对于HashTable,当两个key通过hash函数映射到同一个数组下标时,就会出现hash冲突.
所以我们在数组下标后面增加一个链表,来存储值,数据更多的话就又连接上红黑树了.
数组-> 链表 -> 红黑树
对于ConcurrentHashMap,有两个修改操作,是针对两个不同的链表进行修改, 此时是没有
线程安全问题的!
但是如果是针对同一个链表进行修改,可能会出现线程安全问题.此时ConcurrentHashMap
就把每个链表都加上了一把锁,此时就可以用链表头结点作为锁对象.

ConcurrentHashMap改进

  1. 减小了锁的粒度,每个链表有一把锁,大部分情况下都不会涉及到锁冲突.
  2. 广泛使用了CAS操作,针对两个线程的size++操作也不会有锁冲突.
  3. 写操作进行了加锁, 多操作没有加锁.
  4. 针对扩容操作进行了渐进式优化:
    • HashTable触发扩容,就会一口气完成所有元素的搬运,这个过程非常耗时.
    • ConcurrentHashMap会创建出一个更大的数组, 逐渐的把旧数据往新数组上搬运,可能会有一段时间旧数组和新数组同时存在.
      当进行新增元素时,会把新元素往新数组上插入.
      进行删除元素时,把旧数组的元素删除即可.
      进行查找元素时,对新旧数组都进行查找.
      进行修改元素时,统一在新数组上修改.

小结

对于HashMap和ConcurrentHashMap的区别, 主要是线程不安全和线程安全的区别…
上述比克详细总结了HashMap和ConcurrentHashMap的区别, 希望有收获的小伙伴动动手指,
多多支持.

相关推荐

  1. HashTableConcurrentHashMap区别

    2024-04-22 21:12:08       20 阅读
  2. HashmapHashtable区别

    2024-04-22 21:12:08       21 阅读
  3. HashMapHashtable区别(绝对经典)

    2024-04-22 21:12:08       38 阅读
  4. HashMap Hashtable区别底层原理

    2024-04-22 21:12:08       16 阅读
  5. C#面:介绍 Hashtable Dictionary区别

    2024-04-22 21:12:08       16 阅读
  6. HashMap Hashtable 有什么区别

    2024-04-22 21:12:08       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-22 21:12:08       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-22 21:12:08       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-22 21:12:08       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-22 21:12:08       20 阅读

热门阅读

  1. 前端错误监控的方法有哪些

    2024-04-22 21:12:08       16 阅读
  2. numpy

    2024-04-22 21:12:08       15 阅读
  3. C# 接口

    2024-04-22 21:12:08       58 阅读
  4. ubuntu在线安装mysql数据库

    2024-04-22 21:12:08       54 阅读
  5. 十分钟Nginx优化速成课

    2024-04-22 21:12:08       32 阅读
  6. 浅理解vue2中的模板编译

    2024-04-22 21:12:08       18 阅读
  7. H3C交换机FTP与TFTP

    2024-04-22 21:12:08       19 阅读
  8. Android view点击监听

    2024-04-22 21:12:08       18 阅读