用到CopyOnWriteArrayList,使用时,主要有两个问题:
1)用Collections.sort()排序报错:
Caused by: java.lang.UnsupportedOperationException at java.util.concurrent.CopyOnWriteArrayList$COWIterator.set(CopyOnWriteArrayList.java:1185) at java.util.Collections.sort(Collections.java:234)
解决:可以复制到new ArrayList()中,排序,并clear()和复制回来。
2)元素太多,并发多,内存不够用:
CopyOnWriteArrayList原理:写数据时,先在内存备份一份,改完再回写。
如果上面两个问题没有影响,而且是读多写少的情况,就可以使用。