1. 程式人生 > >Java源碼閱讀(不斷補充)

Java源碼閱讀(不斷補充)

cep bstr current 情況 serial add 叠代 添加 HR

java.util.LinkedList
  LinkedList是實現了List接口的雙鏈表實現,擁有list的所有方法並且允許所有元素(包括null)。
雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個數據結點中都有兩個指針,分別指向直接後繼和直接前驅。所以,從雙向鏈表中的任意一個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。一般我們都構造雙向循環鏈表。
  需要註意的是LinkedList是非同步的,當大量線程並發地訪問鏈表時,當至少有一個線程修改了列表的結構,那它必須進行外部同步(結構修改指的是
添加或刪除一個或多個元素的操作,僅僅設置值不能算修改了列表結構)。一般通過封裝在列表的一些對象實現同步。
  如果沒有這樣的對象存在,則列表應該使用Collections.synchronizedList方法進行同步。這個最好在創建列表的時候就使用,用於
防止偶然的非同步訪問這個列表:
  List list = Collections.synchronizedList(new LinkedList(...));
通過調用iterator和ListIterator方法返回叠代器將會立馬報錯,當以下情況發生時:在創建叠代器後的任何時間對其結構進行修改
  除了通過叠代器自己的remove或add之外的任何方式,叠代器將拋出一個ConcurrentModificationException。因此不進行同步操作的話,當
面對並發時,叠代器會快速、徹底得失敗。
public class LinkedList<E> extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
{
LikedList是一個實現了List接口的類,並能進行序列化操作(實現了java.io.Serializable接口)。

Java源碼閱讀(不斷補充)