据我所知,ConcurrentHashMap对存储桶进行分区,并且每个分区上都有单独的锁。但是HashTable对所有存储桶都有一个单锁。
因此,ConcurrentHashMap可以更高效或(在最坏的情况下)与HashTable一样有效。那么为什么Java需要将HashTable保留在其最新版本中呢。
现在不是HashTable了吗?或者还有一些专业HashTable比ConcurrentHashMap还要好吗?
答案 0 :(得分:5)
一个非常简单的原因:使用该经典可能有数十亿行代码。那些想要使用更新的JDK重新编译代码的人。
你想打破所有这些!?
答案 1 :(得分:1)
这个概念不仅适用于Hashtable
,实际上它适用于所有遗留类,因为Java版本应该是二进制向后兼容的。
这对于想要升级到较新版本的Java而不用担心修改其现有功能的应用程序或项目非常有用,它们使用了一些遗留类(如Hashtable
), Vector
等等。)。
向后兼容性
Java版本应该是二进制向后兼容的。对于 例如,JDK 8可以运行由JDK 7或JDK 6编译的代码。这很常见 通过使用来查看应用程序利用此向后兼容性 由不同Java版本构建的组件。兼容性指南 (后面解释)存在为每个主要版本提供特殊 当某些东西不向后兼容时提及。
您可以查看here