List:
Vector:
Vector 和 ArrayList 大同小异,底层都是用数组实现,只是在它的大部分方法(put、get、remover)上添加了 synchronized关键字,用来保证线程安全;另外,ArrayList 在扩容时是在原来的基础上扩展0.5倍,而 Vector是扩展1倍;此外Vector除了 iterator() 和 listIterator() (两个都支持 fail-fast机制)比 ArrayList 多一个支持fail-fast机制的迭代器:elements(),只有 hasMoreElements() 和 nextElement() 方法。
Collections.synchronizedList():
因为 ArrayList 本身不是线程安全的,通过 Collections.synchronizedList(List<T> list) 可以将其包装成一个线程安全的List。它是对无论是读取还是写入的方法都会进行加锁操作;它能把所有List接口的实现类转换成线程安全的List,比Vector有更好的扩展性和兼容性。
synchronizedList的部分源码: