前些天作項目時,程序出現意外的問題,經後來分析是使用ArrayList這個線程不安全的方法致使api
解決這個問題一般有兩種方法(我的認爲)安全
一:使用synchronized關鍵字,這個你們應該都很熟悉了,不解釋了;性能
二:使用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>>());io
其餘的都沒變,使用的方法也幾乎與ArrayList同樣,你們能夠參考下api文檔;List
額外說下 ArrayList與LinkedList;這兩個都是接口List下的一個實現,用法都同樣,但用的場所的有點不一樣,ArrayList適合於進行大量的隨機訪問的狀況下使用,LinkedList適合在表中進行插入、刪除時使用,兩者都是非線程安全,解決方法同上(爲了不線程安全,以上採起的方法,特別是第二種,實際上是很是損耗性能的)。程序