點開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是一個線程安全的數組結構。