首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >ConcurrentHashMap集合源码解析

ConcurrentHashMap集合源码解析

作者头像
吉林乌拉
发布2019-08-14 17:40:34
发布2019-08-14 17:40:34
4160
举报
文章被收录于专栏:吉林乌拉吉林乌拉

在我们介绍的这么多集合类中只有Hashtable、Stack、Vector这3个集合类是线程安全的,也就是我们不需要添加额外的代码就可以在多线程环境中使用。当然我们也可以通过添加额外的代码使一个非线程安全的集合类,变成线程安全的。主要的方式有两种。

  • 直接使用synchronized同步关键字。
  • 别一种是调用Collections类的synchronizedMap方法

下面代码将创建一个线程安全的HashMap集合

实际上在我们进行多线程开发时,如果需要使用集合时一般不会采用上述的实现方式。而是直接使用一种新的集合实现我们的逻辑,也就是我们今天要分享的ConcurrentHashMap集合。顾名思义这个集合的特性就是保证线程安全的,除此之外,ConcurrentHashMap集合的底层实现还考虑了对性能的优化。

那我们废话不多说,我们直接分析ConcurrentHashMap集合的底层源码。首先还是看一下ConcurrentHashMap集合的初始化代码。

ConcurrentHashMap集合的无参构造方法只是定义了一个空方法并没有任何实现。在一点和其它集合类的初始化有很大的不同。由于ConcurrentHashMap集合的特性是保证线程安全的。并且我们知道如果在使用集合时发生线程安全问题,那么十有八九的原因是发生在添加元素和删除元素时的。也就是集合中的对应的put方法和remove方法。所以接下来我们的重点就是详细分析ConcurrentHashMap集合中的put方法和remove方法的底层实现。

  • put
  • remove
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 吉林乌拉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档