ensurecapacity(int mincapacity) 擴容
public synchronized void ensurecapacity(int mincapacity)
}private void ensurecapacityhelper(int mincapacity)
private void grow(int mincapacity)
擴容過程:計算新容量 increment > 時為原容量 + increment,否則為原容量 * 2; 然後判斷新容量與mincapacity較大值,賦給新容量; 按照新容量建立新陣列。 注意ensurecapacity是同步方法。
add(e e)
public synchronized boolean add(e e)
add(int index, e element)
public void add(int index, e element)
public synchronized void insertelementat(e obj, int index)
ensurecapacityhelper(elementcount + 1); // 確認容量
system.arraycopy(elementdata, index, elementdata, index + 1, elementcount -
index); // 將index開始的一起移動到index+1開始
elementdata[index] = obj; // 賦值
elementcount++;
}
可以看到add操作和arraylist幾乎一樣,,只是加了synchronized。
remove(int index)
public synchronized e remove(int index)
remove(object o)
public boolean remove(object o)
public synchronized boolean removeelement(object obj)
return false;
}public synchronized void removeelementat(int index)
else if (index < 0)
int j = elementcount - index - 1;
if (j > 0)
elementcount--;
elementdata[elementcount] = null; /* to let gc do its work */
}
也與arraylist很相似,加上了synchronized。 通過複製陣列實現,,addall、removeall也是複製陣列實現。
toarray() 與 toarray(t a) 與arraylist一樣,加上synchronized。
iterator()方法內next()與remove()加上synchronized。
vector內部用來大量的synchronized保證同步,是執行緒安全的list實現
通過capacity指定陣列容量,capacityincrement指定擴容增量。capacityincrement<=0時,新容量為原來2被,否則新容量為(原容量 + capacityincrement )。這並不是最後的容量,而是用新容量與指定的mincapacity比較,取較大值作為最後的新容量。
方法實現方式與arraylist相同,只是加入了同步機制。
也實現了randomaccess介面,遍歷時用for(int i=0;i
ThreadLocal 原始碼分析 jdk1 6
相信很多做分布式web開發的都封裝過這樣的乙個工具用來管理當前登入的使用者。在 裡面把使用者set進來 在controller 裡面get 出來使用 而且都是基於threadlocal 這個模板類來封裝的,出於好奇跟蹤進原始碼一 竟 這裡簡單寫個例子 public class baseloginco...
Vector原始碼解析 jdk1 8
概述 vector實現了list的介面,底層同樣是基於陣列實現的,可以儲存null。功能結構與arraylist的類似,不同的是執行緒安全的。建構函式protected object elementdata protected int capacityincrement public vector ...
JDk原始碼解析之四 Vector原始碼解析
具體的三個屬性 解釋看圖中注釋。vector沒有採取arraylist臨界值擴容的辦法,而是每次不夠的時候,直接根據capacity的值來增加。具體怎麼增加後面會說。vector的構造方法如下。簡單粗暴,如果呼叫無參建構函式,直接就將初始容量設定成了10,最終在右側的構造方法裡,將陣列的長度設定為1...