ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ConcurrentMap 并发映射

2020-06-06 13:52:25  阅读:246  来源: 互联网

标签:ConcurrentMap 映射 默认 并发 线程 红黑树 允许


一、概述

1.是JDK1.5提供的用于应对高并发以及保证安全性的一类映射

 

二、ConcurrentHashMap - 并发哈希映射

1.底层结构依然是依靠数组+链表

2.默认初始容量是16,默认加载因子是0.75,默认扩容是增加1倍

3. 底层采用了分桶锁(分段锁)机制保证并发性,在后续的版本中,在分段锁的基础上引入了读写锁的机制:

   a.读锁:允许多个线程同时读,不允许线程写

   b.写锁:允许一个线程写,不允许线程读

4.在JDK1.8中,采用了无锁算法CAS(Compare and Swap - 比较和交换)

CAS的语义:我认为V的值是A,如果是,那么将V的值更新为B,否则修改并告诉V的值实际为多少

V 内存值

A 旧的预期值

B 新的预期值

 

5.在JDK1.8中,引入红黑树机制。当桶中的元素个数超过8个的时候,会扭转成一棵树;

如果节点数不足7个,则会扭转回链表

解决问题:桶数越多,扩容的几率就越低,桶数越多,每一个桶中的元素个数越多,使用红黑树

 

6.红黑树:

a.本质上是一颗自平衡二叉查找树 - Binary Search Tree - BST

  二叉树 - Binary Tree - B-树 

 

三、ConcurrentNavigableMap

 

 

 

 

 

 

标签:ConcurrentMap,映射,默认,并发,线程,红黑树,允许
来源: https://www.cnblogs.com/alen-apple/p/13054442.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有