我知道Java中的Array List和Vector都是多线程的糟糕选择。我知道数组列表不是同步的,这就是为什么多线程不好的原因。我想知道Java中多线程同步向量类性能差的原因。
背后的原因是什么?
发布于 2017-03-25 17:39:46
向量为每个方法同步对其数据的访问。
在某些情况下,完全不需要同步,但不能从向量中删除同步。在这种情况下,由于不必要的同步仍然有其代价,向量将效率低下。
另一方面,在某些情况下,应该同步整个方法调用序列。然后,向量方法上的单独同步是无用的,再次增加了性能成本。
ArrayList可用于多线程程序,但与外部同步.
我建议阅读Prc格中的Java并发性来深入了解这个主题。它将帮助您了解外部/内部同步、并发集合以及更多的东西,这些都是真正了解同步方式之间的区别所必需的。
https://stackoverflow.com/questions/43015213
复制相似问题