gpt4 book ai didi

java - HashMap:对于多个读者和一个作者的多线程访问安全吗?

转载 作者:搜寻专家 更新时间:2023-11-01 03:26:37 26 4
gpt4 key购买 nike

我正在阅读 java.util.HashMap 的文档,它说:

If multiple threads access this map concurrently, and at least one of the threads modifies the map structurally, it must be synchronized externally.

“它”是什么意思?“它”可以解释为修改 map 的线程,也可以解释为 map 本身。

“多线程读取安全”和“只有在有写入器时才在单线程上安全”的情况都不是明智之举(至少对我而言),这让我相信调用“多个读取器和单个写入器”文档中的具体情况意味着该语句应该被解释为“安全地让多个线程读取和一个线程写入”,而不是简单的“当你有一个写入器时锁定所有东西”。

更重要的是,.Net 中的哈希表实现(明确地)记录为:

Hashtable is thread safe for use by multiple reader threads and a single writing thread

(默认情况下,.Net 类不是线程安全的),因此“多个读取器线程和一个单个写入器线程”的情况一定是有原因的。

最佳答案

当线程“在结构上修改映射”时,内部元素处于不确定状态,因此读取可能会受到影响。因此需要使用 map 外部的一些方法来同步读取和写入。

也许 .Net 库的作者在更新期间更加小心地保持其内部结构处于确定状态。

关于java - HashMap:对于多个读者和一个作者的多线程访问安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12444042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com