当ConcurrentHashMap比它更有效时,为什么HashTable仍然存在于Java中?

pra*_*kur 2 java concurrency hashtable hashmap concurrenthashmap

据我所知,ConcurrentHashMap对存储桶进行分区,并在每个分区上都有单独的锁.但是HashTable 对所有存储桶都有一个.

因此,ConcurrentHashMap可以更高效,或者(在最坏的情况下)与HashTable一样有效.那么为什么Java需要将HashTable保留在其最新版本中.

现在不是HashTable了吗?或者还有一些专业人员HashTable超过ConcurrentHashMap?

Gho*_*ica 5

一个非常简单的原因:使用该经典可能有数以万计的代码行.那些想要使用更新的JDK重新编译代码的人.

你想打破所有这些!?

  • 您不能将“Hashtable”的内部结构重新设计为“ConcurrentHashMap”。它的设计的一个关键部分是它“确实”使用“同步”,这意味着客户端代码也可以使用“同步”来执行多步骤更新,并保证所有其他并发访问都被阻止。此类代码根本无法重定向以使用“ConcurrentHashMap”;那么就需要一种完全不同的算法。我们甚至不能假设每个用例都有无锁替代方案。 (2认同)