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

相關文章
相關標籤/搜索