【问题标题】:difference between vector and thread safe arraylist向量和线程安全数组列表之间的区别
【发布时间】:2016-05-20 08:54:44
【问题描述】:

Java 中向量和线程安全数组列表有什么区别。 Vector 是同步的,而 arraylist 不是。但是如果我们让 arrayist 线程安全,那么它会和 vector 一样吗?一个区别是向量增长了 100%,而 arraylist 增长了 50%。与性能或其他因素有关的任何差异?

【问题讨论】:

  • 请标上您使用的语言
  • 请参考 stackoverflow.com/questions/1386275/… 并忘记 Vector,除非您正在处理遗留代码。
  • 不同之处在于 Vector 已经死了 20 年了。假装你从未听说过它。它从不正确使用。在最坏的情况下,使用Collections.synchronizedList(new ArrayList<>())

标签: java arraylist vector


【解决方案1】:

矢量真的很老了,我真的不推荐使用它们。至于 ArrayList 的线程安全替代方案,您应该看看Google Guava (Immutable Collections Explained)

【讨论】:

    【解决方案2】:

    ArrayList 提供更好的性能,因为它是非同步的。 Vector 操作性能很差,因为它们是线程安全的,在 Vector 上工作的线程获得了一个锁,这使得其他线程等待直到锁被释放。

    阅读this了解更多信息。

    【讨论】:

    • 更正确的说法是Vector 操作是同步的。 在存在迭代器(例如,没有外部同步)的情况下,它们不是线程安全的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 2022-11-20
    相关资源
    最近更新 更多