【发布时间】:2023-03-08 00:31:01
【问题描述】:
在阅读有关集合实现的 Oracle 教程时,我发现了以下句子:
如果您需要同步,
Vector将比与Collections.synchronizedList同步的ArrayList稍快
但是在寻找它们之间的区别时,很多人不鼓励使用Vector,当需要同步时应该用SynchronizedList代替。
那么哪一方有权被追随?
【问题讨论】:
-
性能差异(如果有的话)以及自撰写文章以来是否仍然存在,可能可以忽略不计。 Vector 应被视为已弃用。就当它不存在一样。此外,Collections.synchronizedList() 清楚地表达了意图:它对读者说:我需要一个同步列表。而 new Vector 对读者说:这一定是几年前写的,或者是由 17 年前学习 Java 并且从未更新过的程序员编写的。
-
@JBNizet 是否有任何示例表明 Vector 不适合同步,而 SynchronizedList 做得比它更好,因为当我查看他们的代码时,它们都使用同步块/方法。
-
不是一个同步一个不同步。我没这么说。就是 Vector 早于 Collections API,带来了很多过时的方法,并被 ArrayList 和 Collections.synchronizedList(arrayList) 取代。如果它还没有被官方弃用,那可能是因为它仍在 JDK 的其他旧类的公共 API 中使用。但你应该这样考虑。
-
@JBNizet 感谢您的澄清,教程是应该更新的。
-
@NarutoBijuMode 注意:Vector 在 Java 1.2 (1998) 中被替换了它真的太老了,除非你必须,否则你不应该使用它。
标签: java list collections synchronization