并发编程复习(七):并发类容器ConcurrentHashMap&CopyOnWrite
发布日期:2021-11-13 10:21:45 浏览次数:15 分类:技术文章

本文共 637 字,大约阅读时间需要 2 分钟。

这里就不上代码了,因为它对应的就是HashTable,只不过在上面做了很大优化,即支持相对较高的并发。

ConcurrentHashMap在JDK1.5之后出现,底层原理:

内部将存储的数据分为了16个段,一个线程访问一个段中的数据的时候,会将这个段上锁,即加上synchronized同步,其他线程同时访问时会等其他线程释放锁后进行操作。是不是感觉没啥不一样的?但是,注意,是16个段,也就是不同段是能够并发操作的。这就是底层设计原理。

除此之外,还有一个类就是ConcurrentSkipListMap:

该类其实是对TreeMap的优化,其实就是比ConcurrentHashMap多了一个功能,排序。用到的时候在研究。

CopyOnWrite简称COW同样在JDK1.5之后:

JDK里的COW容器有两种:CopyOnWriteArrayList和CopyOnWriteArraySet.

该类其实用了一种思想,即读写分离,在每次修改元素的时候,不直接往当前容器中添加,而是在此容器的基础之上复制出一个相同的容器,往新的容器当中进行修改操作,操作完毕在将原来容器的引用指向新的容器,这样做的好处就是我们可以对容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以说它是读写分离思想,读和写是不同的容器。

要知道,多个线程并发修改的时候,其实是加锁的,所以此类应用场景其实是读多写少的情景。

我就不在这里研究源代码了,暂时没有达到那个境界,仅在此做个记录!

转载地址:https://blog.csdn.net/Lee_Ho_/article/details/78057522 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:并发编程复习(八):队列相关
下一篇:并发编程复习(六):使用wait和notify模拟阻塞队列

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月03日 18时00分24秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

【C++】算法集锦(10)通俗讲kmp算法 2021-06-30
【C++】算法集锦(12):高楼扔鸡蛋 2021-06-30
【图解】拥塞控制 2019-04-27
线程上下文切换 2019-04-27
什么是服务熔断? 2019-04-27
服务器压力过大?CPU打满?我来帮你快速检查Linux服务器性能 2019-04-27
C++面经总结之《Effective C++》(一) 2019-04-27
C++面经总结之《Effective C++》(二) 2019-04-27
这是什么“虎狼之词”啊!!!程序员的健康问题,看一线老中医怎么说!!! 2019-04-27
打开我的收藏夹 -- Python数据分析杂谈 2019-04-27
上手Pandas,带你玩转数据(1)-- 实例详解pandas数据结构 2019-04-27
上手Pandas,带你玩转数据(2)-- 使用pandas从多种文件中读取数据 2019-04-27
上手Pandas,带你玩转数据(3)-- pandas数据存入文件 2019-04-27
爬虫遇上不让右击、不让F12的网站,该怎么办? 2019-04-27
上手Pandas,带你玩转数据(4)-- 数据清洗 2019-04-27
上手Pandas,带你玩转数据(5)-- 数据转换与数据定位 2019-04-27
上手Pandas,带你玩转数据(6)-- 摆脱对pandas可视化丑图的刻板印象吧 2019-04-27
从零开始,学会Python爬虫不再难!!! -- (1)开篇:初识爬虫,基础铺垫 丨蓄力计划 2019-04-27
从零开始,学会Python爬虫不再难!!! -- (2)承接:解析网页,抓取标签 丨蓄力计划 2019-04-27
AttributeError: module ‘urllib‘ has no attribute ‘quote‘的解决办法 2019-04-27