ConcurrentHashMap如何实现高效地线程安全?

 我来答
裤倾墙鱼分1e

2021-11-14 · 贡献了超过596个回答
知道答主
回答量:596
采纳率:4%
帮助的人:23.2万
展开全部

Java 提供了不同层面的线程安全支持。在传统集合框架内部,除了 Hashtable 等同步容器,还提供了所谓的同步包装器(Synchronized Wrapper),我们可以调用 Collections 工具类提供的包装方法,来获取一个同步的包装容器(如 Collections.synchronizedMap),但是它们都是利用非常粗粒度的同步方式,在高并发情况下,性能比较低下。

另外,更加普遍的选择是利用并发包提供的线程安全容器类,它提供了:

  • 各种并发容器,比如 ConcurrentHashMap、CopyOnWriteArrayList。

  • 各种线程安全队列(Queue/Deque),如 ArrayBlockingQueue、SynchronousQueue。

  • 各种有序容器的线程安全版本等。

  • 具体保证线程安全的方式,包括有从简单的 synchronize 方式,到基于更加精细化的,比如基于分离锁实现的 ConcurrentHashMap 等并发实现等。具体选择要看开发的场景需求,总体来说,并发包内提供的容器通用场景,远优于早期的简单同步实现

河南新华电脑学院
2021-11-14 · 百度认证:河南新华电脑学院有限公司官方账号
河南新华电脑学院
河南新华电脑学院隶属于IT教育知名品牌——新华互联网科技,是具有一定影响力的直营电脑教育品牌。
向TA提问
展开全部
1.为什么需要 ConcurrentHashMap? Hashtable 本身比较低效,因为它的实现基本就是将 put、get、size 等各种方法加上“synchronized”。简单来说,这就导致了所...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2021-11-14 · TA获得超过478个赞
知道答主
回答量:9801
采纳率:7%
帮助的人:425万
展开全部
一般情况下的话如果说想要实现高校第一县城安全的话这个也是非常不错的可以直接就是从三个方面进行测算所
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
prince东野圭吾

2021-11-14 · 超过82用户采纳过TA的回答
知道小有建树答主
回答量:805
采纳率:0%
帮助的人:31.2万
展开全部
每个操作都是原子操作,都带锁的,保证一个成员同一时间只被一个方法调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杯子的盖子80

2021-11-14 · 超过117用户采纳过TA的回答
知道答主
回答量:2994
采纳率:24%
帮助的人:85.8万
展开全部
项目中经常会有多个线程要访问同一个数据,此时比较常用的办法是用synchronize加锁,CAS去进行安全的累加,去实现多线程场景下的安全的更新一个数据的效果,HashMap是用的比较多,可能就是多个线程同时读写一个HashMap,HashMap是线程不安全的,如果对整个map去synchronized加锁,类似下面这种伪代码也没那么必要。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(18)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式