Collection源码分析(七):Vector源码分析

点开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是一个线程安全的数组结构。

相关文章
相关标签/搜索