HashTable的优点

时间:2012-01-16 08:04:00

标签: java collections

使用HashtableHashMap进行比较的主要优势是什么?因为,Hashtable的主要优点是同步。 现在,地图也可以使用synchronizedMap()进行同步。

Map m = Collections.synchronizedMap(hashMap);

2 个答案:

答案 0 :(得分:3)

Hashtable存在于集合框架之前,因此它主要是为了向后兼容而保留。请改用ConcurrentHashMap

请注意,存在轻微的语义差异 - Hashtable不允许空值,而HashMap允许空值和空键。

答案 1 :(得分:2)

HashTable很久以前就被弃用了。主要区别在于HashTable在内部同步,而HashMap则不是。然而,这被视为一个缺点,因为在单个线程上使用HashTable会导致在不需要时锁定和解锁的惩罚。

另外,使HashTable的同步变得不那么有用的另一点是,在序列中执行两个线程安全的操作并不能保证整个序列的原子性,例如可以考虑:

if(key does not exist)
    add key

虽然测试存在和添加都是线程安全的,但上面的构造不是,因为另一个线程可能在中间中断它。因此,无论如何都需要外部同步。

因此,我认为这些天没有理由使用HashTable ......