首页 > 其他分享 > ConcurrentLinkedQueue和ConcurrentHashMap简单介绍

ConcurrentLinkedQueue和ConcurrentHashMap简单介绍

时间:2022-12-15 23:44:06浏览次数:50  
标签:黑树 ConcurrentHashMap ConcurrentLinkedQueue 队列 链表 简单 NULL 节点

ConcurrentLinkedQueue是一个单向的链表

 

入队列

 

 

 

 

 每次在队尾追加两个节点,才移动一次tail节点

添加节点1和节点2

 

 在添加一个节点3

 

 step4中q为NULL,添加一个节点,即添加两个节点移动一次

出队列

 

 

 

 出队列是不观察tail指针位置,依赖于head指针后续的节点是否为NULL这一条件,即置NULL成功,出队列成功

 

ConcurrentHashMap的作用是降低Hash冲突,提升并发度
该map集合的结构是在链表和红黑树两种结构之间相互转换的,刚开始是链表的结构,当链表中的元素超过某个值,自动转化为红黑树,当红黑树中元素个数小于某个值,结构又转化为链表
使用红黑树的结构时,查询速度和更新速度比链表快
加锁的方案是对每个节点分别加锁

 

 

 

 

 

初始化

 

 

 

 

 

 

 

 

 

扩容

 

 只有当数组长度大于或者等于64,才会考虑转化为红黑树

 

 

 

 在扩容未完成之前,对应的数据是已经前移到了新的HashMap中,但是获取元素可能还是访问旧的HashMap

 

 

 

 

 

 

 

 在扩容还没有结束之前,想要访问旧的元素,对应的位置放置引用

 



标签:黑树,ConcurrentHashMap,ConcurrentLinkedQueue,队列,链表,简单,NULL,节点
From: https://www.cnblogs.com/q202105271618/p/16984103.html

相关文章

  • 有bug的轮播套简单轮播图,懒得修复
    <!DOCTYPEhtml><html><head>  <metacharset="utf-8"/>  <title>sada</title></head><style>  #tyu{        position:relative;......
  • maven fmpp+javacc 集成使用简单说明
    dremio以及apachecalcite使用到fmpp+javacc进行代码生成处理,以下是一个简单的集成测试fmpp的作用fmpp实际上是包装了freemarker,提供了cli以及javaapi可以方......
  • Python super() 详解 最简单的解释
    首先提一下,经典类和新式类。在Python2中,如果定义类的方式是classMyClass:那么该类叫做经典类,如果定义类的方式为classMyClass(object):那么该类为新式类。在Python3中......
  • 简单JS 日期转时间戳/时间戳转日期
    这里我的后端需要秒级 毫秒级不除1000即可//日期转时间戳toStamp(date){constmyDate=newDate(date)conststmapEg=Date.parse(myDate)......
  • BUUCTF Helloword 特别简单的安卓逆向
    BUUCTFHelloword特别简单的安卓逆向 用apkide打开即可工具下载:https://down.52pojie.cn/Tools/   点击左上角的项目打开apk文件,找到主函数.   安卓......
  • 简单创建webservice接口并采用rpc方式调用
    简单创建webservice接口并采用rpc方式调用一、简单创建webservice接口1.新建一个maven项目2.创建一个包3.创建一个接口在新建的包下创建接口点击查看代码public......
  • Flac3d c++ 二次开发结果简单示例
    通过在c++中定义好相应的方法,然后在fish中使用该方法,适合课题组或研发单位封装自己课题组的一些核心算法,防止算法泄露。......
  • ECharts的学习(一):制作一个简单的柱状图
    https://blog.csdn.net/aiyishengyishi/article/details/53421365本文章作为学习ECharts练手之作,中文学习地址:http://echarts.baidu.com/index.html实现效果如下: <!DOC......
  • 微信协议简单调研笔记
    前言微信可调研点很多,这里仅仅从协议角度进行调研,会涉及到微信协议交换、消息收发等。所谓“弱水三千,只取一瓢”吧。杂七杂八的,有些长,可直接拉到最后看结论好了。一。微信协......
  • 简单 Lazy-Load 实现
    首先新建一个空项目,目录结构如下:大家可以往images文件夹里塞入各种各样自己喜欢的图片。我们在index.html中,为这些图片预置img标签:<!DOCTYPEhtml><htmllang="......