繁体   English   中英

ConcurrentHashMap操作

[英]ConcurrentHashMap operations

以下是ConcurrentHashMap的Java文档中的一些内容

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

声明的含义是什么

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

从上一段开始? 任何人都可以用put()或get()方法的任何示例进行解释吗?

ConcurrentHashMap允许从多个线程并发修改Map,而无需阻止它们。 Collections.synchronizedMap(map)创建一个阻塞Map,这会降低性能,尽管可以确保一致性(如果使用正确)。

如果需要确保数据一致性,并且每个线程都需要具有最新的地图视图,请使用第二个选项。 如果性能至关重要,请使用第一个,并且每个线程仅将数据插入到映射中,而读取的频率则较低。

您的问题很奇怪。 如果您了解“线程安全性”的含义,那么您将能够自己理解它如何应用于get()和put()。 如果您不了解线程安全性,那么就没有必要专门针对get()和put()对其进行解释。 您确定这不是作业问题吗?

但是,无论如何回答您的问题,ConcurrentHashMap是线程安全的事实意味着,如果您有多个线程同时在同一张图上执行put(),那么:a)不会损坏该对象的内部数据结构map和:b)其他执行get()的线程将看到其他线程输入的所有值。 对于非线程安全的Map(例如HashMap),不能保证所有这些。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM