点开Vector的源码 能够看到 这个类继承自AbstractList 实现了List<E>, RandomAccess, Cloneable, java.io.Serializable三个接口,是否是感受和ArrayList很像java
注意到 Vector主要的三个变量数组
elementData是一个Object的数组安全
elementCount是这个数组的下标变量,后面会用到。dom
capacityIncrement 这个值 则是这个数组的扩容值线程
一样的 咱们从方法入手 实例化方法:继承
这个实例化方法同arrayList的实例化方法同样,实例化一个初始长度为10的Object数组接口
add方法ci
1.能够看到 这个add 是同步的 synchronized 这点不一样于ArrayList的add方法因此说 这个是线程安全的element
2.而扩容方法采起如下规则:若是capacityIncrement>0 则在之前的基础上 扩容capacityIncrement的长度rem
不然 将原来的长度扩容一倍
3.而后将原来的数据 拷贝至新数组里面
能够看出 须要自定义Vector的每次扩容值 只须要经过
两个带参数的构造器实例化赋值便可。
一样的Vector的remove方法 也是synchronized修饰 是线程安全的
因此 Vector相比于ArrayList是一个线程安全的数组结构。