提问者:小点点

当在并发哈希图中调整大小时,读取将如何发生?


假设有2个线程。两个线程都在并发HashMap的同一个Hashtable上工作。

线程T1通过调用map. get()而不是迭代来读取,而线程T2将对象放入并发HashMap的同一个HashTable中。

现在,如果达到阈值水平,因此T2将尝试在并发HashMap中调整Hashtable的大小。那么,T1是会被阻止读取还是会从旧的缓存结构中读取?

答:我假设作为价值和入口

我读过很多博客,甚至javadoc,它们都没有为这种情况提供明确的答案。让我知道你的输入。


共2个答案

匿名用户

从文档:

检索操作(包括

因此,如果您在另一个线程修改它时迭代ConCurrentHashMap实例,则不会发生任何不好的事情,也不会阻塞您的线程,您只会看到一些较旧的快照。

另见:

>

  • 并发HashMap如何在Java内部工作

    并发HashMap如何在Java内部工作

  • 匿名用户

    以下是我的理解: