CopyOnWriteArrayList 原始碼分析

2021-07-02 07:36:39 字數 724 閱讀 8676

1.copyonwritearraylist 是執行緒安全的arraylist,適用於儲存的資料量不大,讀操作遠多於寫操作,對實時性要求不高的場景。copyonwritearraylist 對

讀操作不同步,對寫操作同步。在進行寫操作時,會對共享變數進行copy,在副本上進行更新,然後將更新好的副本替換掉原來的共享變數。寫操作開銷比較大。由於讀操作不需同步,所以在某執行緒進行寫操作時,其他執行緒可以進行讀操作。這樣也就導致了資料不是實時一致的。

2.copyonwritearraylist 屬性

transient final reentrantlock lock = new reentrantlock();//用於控制寫操作的併發

/** the array, accessed only via getarray/setarray. */

private volatile transient object array;//儲存元素

3.add函式原始碼

public boolean add(e e)  finally 

}

總體來說比較簡單 

4 .remove函式原始碼

public e remove(int index) 

return oldvalue;

} finally

}

參考:

Cartographer原始碼篇 原始碼分析 1

在安裝編譯cartographer 1.0.0的時候,我們可以看到 主要包括cartorgarpher ros cartographer ceres sover三個部分。其中,ceres solver用於非線性優化,求解最小二乘問題 cartographer ros為ros平台的封裝,獲取感測器資料...

AbstractListView原始碼分析3

normal list that does not indicate choices public static final int choice mode none 0 the list allows up to one choice public static final int choice ...

Android AsyncTask原始碼分析

android中只能在主線程中進行ui操作,如果是其它子執行緒,需要借助非同步訊息處理機制handler。除此之外,還有個非常方便的asynctask類,這個類內部封裝了handler和執行緒池。本文先簡要介紹asynctask的用法,然後分析具體實現。asynctask是乙個抽象類,我們需要建立子...