-1

ConcurrentHashMap允许从多个线程同时修改Map元素而不需要阻塞它们,但HashMap阻塞整个HashMap对象而不是它的元素,ConcurrentHashMap对吗?

但是,如果一个线程的计数ConcurrentHashMap为 10,同时另一个线程从该线程中删除了一个项目,该怎么办。那么第一个线程数会变成错误的吗?

4

1 回答 1

2

您的问题的答案在最自然的地方,即ConcurrentHashMap.

见下文:

检索操作(包括 get)一般不会阻塞,因此可能与更新操作(包括 put 和 remove)重叠。检索反映了最近完成的更新操作在其开始时保持的结果。对于 putAll 和 clear 等聚合操作,并发检索可能仅反映插入或删除某些条目。类似地,迭代器和枚举返回反映哈希表在创建迭代器/枚举时或之后的某个时间点的状态的元素。它们不会抛出 ConcurrentModificationException。但是,迭代器被设计为一次只能由一个线程使用。

于 2013-01-17T16:13:46.617 回答