【发布时间】:2012-06-20 18:04:30
【问题描述】:
我正在更新一个旧项目,我想知道是否应该删除一些在 IDE 中标记为“过时”的对象。有问题的对象是 Vector 和 Hashtable。我做了一些研究,似乎这些对象的较新对应物——ArrayList 和 HashMap——基本相同,只是没有同步。
我的问题是,我为什么要切换?我不是只是从我的应用程序中拿走了一点安全性以换取少量的速度吗?无论哪种方式,这似乎都不是一个重大的决定,但我想我会先看看是否值得花时间再做决定。
谢谢!
【问题讨论】:
-
如果这些对象不会被多线程/并发代码触及,您可能不需要同步(因此您不必因
synchronized块而招致可能的性能损失)。Vector和Hashtable在 Java API 中没有被弃用/废弃,您可以在它们或它们的非同步对应物之间进行选择(它们分别公开相同的接口)。同样,在 Java 5 和更高版本中,您可以访问java.util.concurrent,如果您需要并发访问容器,它可能具有性能更好的容器。 -
如果需要,您可以随时使用
Collections.synchronizedList();包装它,但请先查看 Jon 的回答
标签: java arraylist synchronization hashmap