首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ConcurrentHashMap操作

ConcurrentHashMap操作
EN

Stack Overflow用户
提问于 2014-02-06 09:58:01
回答 2查看 92关注 0票数 0

下面是ConcurrentHashMap的java文档中的一些行

该类遵循与Hashtable相同的功能规范,并包含对应于Hashtable的每个方法的方法的版本。然而,即使所有操作都是线程安全的,检索操作也不需要锁定,也不支持以阻止所有访问的方式锁定整个表。

这句话的意思是什么?

尽管所有操作都是线程安全的。

从上面的段落?有人能用put()或get()方法的任何例子来解释吗?

EN

回答 2

Stack Overflow用户

发布于 2014-02-06 10:02:12

ConcurrentHashMap允许从多个线程并发修改Map,而不需要阻止它们。Collections.synchronizedMap(地图)创建了一个阻塞映射,它将降低性能,但确保一致性(如果使用得当)。

如果您需要确保数据的一致性,并且每个线程都需要有一个最新的地图视图,请使用第二个选项。使用第一个如果性能非常关键的话,并且每个线程只将数据插入到映射中,并且读取发生的频率较低。

票数 1
EN

Stack Overflow用户

发布于 2014-02-06 16:55:11

你的问题很奇怪。如果您理解“线程安全”意味着什么,那么您将能够理解它如何应用于get()和put()。如果您不了解线程安全,那么就没有必要专门针对get()和put()来解释它。你确定这不是家庭作业问题吗?

但是,无论如何,在回答您的问题时,ConcurrentHashMap是线程安全的这一事实意味着,如果有多个线程同时在同一个映射上执行put()s,那么: a)映射的内部数据结构不会受到损害,并且: b)执行get()的其他线程将看到其他线程输入的所有值。使用非线程安全映射(如HashMap ),这两个映射都没有得到保证。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21599450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档