【问题标题】:Do we need Hashtable since we have ConcurrentHashMap?既然我们有 ConcurrentHashMap,我们还需要 Hashtable 吗?
【发布时间】:2012-05-01 02:05:38
【问题描述】:

Java 的java.util.Hashtable 具有与java.util.HashMap 相同的功能。它们的主要区别在于Hashtable 是线程安全和同步的,而HashMap 不是。从 JDK5 开始,我们有 ConcurrentHashMap 可用于多线程上下文。它比Hashtable 有更好的性能。那么我们以后有什么理由使用Hashtable吗?

【问题讨论】:

    标签: java hashtable concurrenthashmap


    【解决方案1】:

    反向兼容是 Hashtable 仍在 JDK 中的唯一原因。

    另外,Hashtable 的另一种替代方法是Collections.synchronziedMap

    【讨论】:

    • 既然 ConcurrentHashMap 的性能比 synchronizedMap 好,我们有理由使用 synchronizedMap 吗?
    • @Jacky 不,同样的原因也适用:它之前曾存在,因此它会留在那里 - Sun/oracle 非常重视向后兼容性,基本上从不从JDK(JDK7 中仍有一些方法在 1.0 中拼写错误并在 1.1 中重命名)
    【解决方案2】:

    有许多现有接口use HashTable。在大多数情况下,如果不是所有情况,这些都无法在不破坏兼容性的情况下被替换。

    【讨论】:

      猜你喜欢
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 2015-10-24
      相关资源
      最近更新 更多