我只是在寻找为什么 ArrayList 比 Vector 快的问题的答案,我发现 ArrayList 更快,因为它没有同步。 所以我的疑问是:
如果 ArrayList 不是同步的,我们为什么要在多线程环境中使用它并与 Vector 进行比较。
如果我们处于单线程环境中,那么 Vector 的性能会如何降低,因为我们在处理单线程时没有进行同步。
为什么我们要考虑以上几点来比较性能?
请指导我:)
最佳答案
a) 在多线程程序中使用 ArrayList 的方法可能是同步的。
X 类 {
List l = new ArrayList(); synchronized void add(Object e) { l.add(e); } ...
b) 我们可以使用 ArrayList 而无需将其暴露给其他线程,这是仅从局部变量引用 ArrayList 的情况
无效 x() { 列表 l = new ArrayList();//除了current之外没有其他线程可以访问l ...
即使在单线程环境中进入同步方法需要锁定,这也是我们失去性能的地方
public synchronized boolean add(E e) { // current thread will take a lock here modCount++;
...
关于java - 单线程应用程序中的 ArrayList 与 Vector 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30908470/