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

时间:2016-11-04 06:49:28

标签: java concurrency hashmap hashtable concurrenthashmap

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

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

现在不是HashTable了吗?或者还有一些专业HashTable比ConcurrentHashMap还要好吗?

2 个答案:

答案 0 :(得分:5)

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

你想打破所有这些!?

答案 1 :(得分:1)

这个概念不仅适用于Hashtable,实际上它适用于所有遗留类,因为Java版本应该是二进制向后兼容的。

这对于想要升级到较新版本的Java而不用担心修改其现有功能的应用程序或项目非常有用,它们使用了一些遗留类(如Hashtable), Vector等等。)。

向后兼容性

  

Java版本应该是二进制向后兼容的。对于   例如,JDK 8可以运行由JDK 7或JDK 6编译的代码。这很常见   通过使用来查看应用程序利用此向后兼容性   由不同Java版本构建的组件。兼容性指南   (后面解释)存在为每个主要版本提供特殊   当某些东西不向后兼容时提及。

您可以查看here