概述
我们知道,ArrayList是线程不安全的,在多线程并发的情景下,会造成数据不一致的问题,那么这种情况下,可以使用Collections.synchronizedList()将ArrayList转为线程安全的,或者使用CopyOnWriteArrayList,使用Collections.synchronizedList()的话,还需要加个synchronized 锁,建议还是使用CopyOnWriteArrayList吧,简单方便
demo
ArrayList
List<Fish> list= new ArrayList<>();
list.add(new Fish(5, "DogA"));
list.add(new Fish(6, "DogB"));
list.add(new Fish(7, "DogC"));
Collections.synchronizedList(list);
synchronized (list){
list.stream().forEach(System.out::println);
}
CopyOnWriteArrayList:
CopyOnWriteArrayList<Fish> list= new CopyOnWriteArrayList<>();
list.add(new Fish(5, "DogA"));
list.add(new Fish(6, "DogB"));
list.add(new Fish(7, "DogC"));
list.stream().forEach(System.out::println);