【发布时间】:2012-09-16 02:39:38
【问题描述】:
我正在阅读 java.util.HashMap 的文档,上面写着:
如果多个线程同时访问此映射,并且至少有一个 线程在结构上修改映射,它必须是同步的 外部。
“it”是什么意思?“it”可以解释为修改地图的线程,也可以解释为地图本身。
“多线程读取安全”和“只有在有写入器时才在单线程上安全”两种情况都不是明智之举(至少对我而言),这让我相信调用“多读取器和单写入器”文档中的具体情况意味着该语句应该被解释为“安全地让多个线程读取和单个线程写入”,而不是“当你有一个作家时锁定一切”。
更重要的是,.Net 中的哈希表实现(明确地)记录为:
Hashtable 是线程安全的,可供多个读取线程和单个写入线程使用
(默认情况下,.Net 类不是线程安全的),因此“多个读取器线程和一个单个写入器线程”的情况肯定存在。
【问题讨论】:
-
同步一个线程是没有意义的。您同步对象以控制线程的访问。这是基本的Java。我看不出 .NET 与它有什么关系。
标签: java concurrency hashmap