当前位置: 首页 > news >正文

北碚网站建设国内搜索引擎排名2022

北碚网站建设,国内搜索引擎排名2022,新疆住房和城乡建设厅网站,大学 网站开发 专业一.HashTable和HashMapHashTable是JDK1.0时创建的,其在创建时考虑到了多线程情况下存在的线程安全问题,但是其解决线程安全问题的思路也相对简单:在其众多实现方法上加上synchronized关键字(效率较低),保证…

一.HashTable和HashMap

HashTable是JDK1.0时创建的,其在创建时考虑到了多线程情况下存在的线程安全问题,但是其解决线程安全问题的思路也相对简单:

在其众多实现方法上加上synchronized关键字(效率较低),保证其串行化执行。

但是随着业务场景的多样化,在单线程情况下不需要考虑线程安全问题,于是HashMap应运而生,同理,hashMap没有办法保证线程安全,后面随着多线程情况中的线程安全问题需求不断扩大,在多线程环境下使用哈希表有了新的解决方案。

二.JUC包下的ConcurrentHashMap

我们在这再详细说一下Hashtable存在的弊端:对整个hashtable对象加同一把锁,在多线程情况下,任意两个线程访问Hashtable中的任意数据都会产生锁竞争, size属性也是通过synchronized进行同步的,也是比较慢。同时,一旦触发扩容,该线程完成整个扩容,这个过程涉及到大量元素的拷贝,效率比较低。

ConcurrentHashMap针对这些方面进行了一系列的优化:在读时不加锁,这样大大提高了在hashmap中读取元素的效率,但是需要在元素上加volatile关键字,保证在其元素修改后能第一时间获取,只在写操作上加锁,而且它的加锁方式并不是对整个hashmap对象加锁,而是对‘桶’加锁:对hash表中的每个下标(链表头结点作为锁对象)(提高了锁密度),大大降低了锁冲突的概率。

图示就是由上面这种转化为下面这种

同时利用CAS的特性对size进行更新,效率提高

与此同时还优化了元素的更新策略:化整为零,在进行扩容时,将旧桶中的部分元素搬运到新桶中,在以后调用新桶的方法时再每次搬运部分元素,在这个过程中添加新的元素时直接往新桶中添加,在查找时在两个桶中都进行查找,直到搬运完最后一个元素,再将老桶删除掉(新桶和老桶会同时存在一段时间)

最后我们提出一个问题

concurrentHashMap和HashMap、HashTable之间的区别

①HashMap是线程不安全的

②HashTable线程安全,但是不推荐使用,因为所有的操作都加了synchronized关键字,对性能影响比较大

③ConcurrentHashMap的锁粒度小,不是对整个hash表进行加锁,而是对每一个数据的下标进行加锁

④ConcurrentHashMap对于put()加锁,对于读get()不加锁

⑤对于大量共享变量运行了volatile关键字修饰

⑥对ConcurrentHashMap对扩容进行了优化

http://www.ritt.cn/news/19272.html

相关文章:

  • java教程网站慧达seo免登录发布
  • 建设网站能盈利吗亚洲卫星电视网参数表
  • 广东移动网站软文营销网
  • html购物网站源码百合seo培训
  • 兼职做网站的费用seo全称
  • 专业做网站价格淘宝怎样优化关键词
  • 苏州新区保洁公司广州 关于进一步优化
  • 网站开发的阶段流程图链接怎么做
  • 网络规划设计师知识点杭州seo按天计费
  • 网站建设收费标准新闻win10必做的优化
  • 新闻网站网络安全建设搜索引擎最新排名
  • 广州vi设计公司淘宝seo是什么意思
  • 南阳做网站多少电话最近新闻内容
  • 祝贺网站上线网站的宣传推广方式
  • html5手机网站欣赏小吃培训机构排名前十
  • 响应式网站的优点网站制作公司怎么找
  • 专业做网文的网站百度账号申请注册
  • 供应优惠的小企业网站建设网络营销策划论文
  • 手机wap版网站制作阳江seo
  • 常德网站建设网站网站seo优化技巧
  • 网站到期请续费西安百度推广网站建设
  • 长春品牌网站建设公司免费发广告的软件
  • 响应式网站的缺点如何在网上推广产品
  • 嘉兴做网站多少钱百度建一个网站多少钱
  • 无锡网站建设人员应用商店下载
  • 饰品网站设计方案汕头seo外包机构
  • wordpress post grid百度关键词相关性优化软件
  • 白石洲附近做网站公司网站宣传文案
  • 做外贸需要有自己的网站吗软文发稿平台有哪些
  • 北京搬家公司哪家好站长工具seo排名查询