为什么广泛认为Vector和HashTable将被弃用?
Vector和HashTable被广泛认为将被弃用的原因有两个:同步和性能。Vector和Hashtable都是同步的,这意味着它们在多线程环境下可以安全使用,但也导致了严重的性能开销。在大多数情况下,我们并不需要这种同步机制。另外,Hashtable还不能合理地存储null值,这也限制了它的使用。
为了解决这个问题,人们开始使用其他替代方案,比如使用List接口的实现类ArrayList或LinkedList来替代Vector,使用HashMap来替代Hashtable。这些替代方案不需要同步,因此性能更好。另外,通过使用并发集合类ConcurrentHashMap,也可以在多线程环境下安全使用集合,而无需对每个操作进行同步。
尽管存在同步问题,但使用synchronizedList并不能解决并发问题。因为synchronizedList只是对每个操作进行同步,而不是对整个列表进行同步。因此,在多线程环境下仍然可能出现并发问题。为了解决这个问题,可以使用并发集合类CopyOnWriteArrayList,它能够在迭代时保证一致性。
总结起来,Vector和HashTable被广泛认为将被弃用的原因是它们的同步机制导致了性能开销,并且Hashtable不能存储null值。为了解决这个问题,人们开始使用其他替代方案,比如ArrayList、LinkedList和HashMap,并且使用并发集合类来解决并发问题。