- Vector的实现
- 与ArrayList的实现类似,但是使用了synchronized进行同步。ArrayList的实现public synchronized boolean add(E e) { modCount++; ensureCapacityHelper(elementCount + 1); elementData[elementCount++] = e; return true; } public synchronized E get(int index) { if (index >= elementCount) throw new ArrayIndexOutOfBoundsException(index); return elementData(index); }
- 与ArrayList的比较
- Vector是同步的,因此开销就比ArrayList要大,访问速度更慢。最好使用ArrayList,因为同步操作完全可以由程序员自己控制。
- Vector每次扩容请求其大小的2倍空间,而ArrayList是1.5倍。
- 替代方案
- 可以使用 Collections.synchronizedList();得到一i个线程安全的ArrayList
- 也可以使用concurrent并发包下的CopyOnWriteArrayList类List<String> list = new ArrayList<>(); List<String> synList = Collections.synchronizedList(list);
List<String> list = new CopyOnWriteArrayList<>();
Vector与ArrayList
最新推荐文章于 2024-09-13 21:40:38 发布