既然有ConcurrentHashMap,我们还需要Hashtable吗?

3

Java的java.util.Hashtablejava.util.HashMap有相同的功能。它们的主要区别在于Hashtable是线程安全的和同步的,而HashMap则不是。在JDK5中,我们有ConcurrentHashMap可以用于多线程环境。它比Hashtable性能更好。那么我们未来还有使用Hashtable的理由吗?

2个回答

5

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

此外,替代 Hashtable 的另一个选择是Collections.synchronizedMap


既然ConcurrentHashMap的性能比synchronizedMap更好,我们还有理由使用synchronizedMap吗? - Jacky
1
@Jacky 不,同样的原因适用:它以前存在,因此它将保留在那里 - Sun/Oracle非常重视向后兼容性,并且基本上从JDK中不会删除任何内容(在JDK7中仍然存在1.0中拼写错误并在1.1中重命名的方法)。 - Voo

0

有许多现有的接口使用HashTable。在大多数(如果不是全部)情况下,这些接口无法被替换而不破坏兼容性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接