Givemepass's Android 惡補筆記

如何解決ConcurrentModificationException

| Comments

觀念是從我的Java程式比你的快10倍:從概念到工具的極度優化這本書得到的。

一般使用ArrayList來進行操作是很普遍的行為, 但是假設如果在thread進行操作ArrayList,
則很可能會出現ConcurrentModificationException的錯誤,
這時候該怎麼辦呢?

如果你要使用ArrayList就必須避免在多執行緒上操作, 否則你可以使用

Collections.synchronizedList(List list);

另外一種比較有效的方式是使用JDK內的CopyOnWriteArrayList來進行操作。
它在讀的時候就是直接把整個結果回傳回來, 但是寫入的時候, 會複製一份陣列, 當你進行完寫入的操作,
則會跟原本陣列進行同步。

另外他在寫的時候, 也加入了Lock的機制, 因此在寫入的效能會是比較差的。

Comments

comments powered by Disqus