ArrayList如何實現線程安全


一、

1、使用synchronized關鍵字;

2.使用Collections.synchronizedList();使用方法如下:

假如你創建的代碼如下:List<Map<String,Object>> data=new ArrayList<Map<String,Object>>();

那么為了解決這個線程安全問題你可以這么使用Collections.synchronizedList(),如:

List<Map<String,Object>> data=Collections.synchronizedList(new ArrayList<Map<String,Object>>());

其他的都沒變,使用的方法也幾乎與ArrayList一樣,大家可以參考下api文檔;

額外說下 ArrayList與LinkedList;這兩個都是接口List下的一個實現,用法都一樣,但用的場所的有點不同,ArrayList適合於進行大量的隨機訪問的情況下使用,LinkedList適合在表中進行插入、刪除時使用,二者都是非線程安全,解決方法同上(為了避免線程安全,以上采取的方法,特別是第二種,其實是非常損耗性能的)。

二、

定義一個類 MyLinkedList extends LinkedList 
實現同步LinkedList.addFirst(); 和 removeLast();方法!
MyLinkedList list = new MyLinkedList ();
List listProxy = Collections.synchronizedList(list);
用普通方法時用 listprocxy 的方法, .....................
或者MyLinkedList 全部實現同步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM