并发编程系列之八线程安全List list = new ArrayList()不是线程安全的,ArrayList里面增删改查的操作,底层是数组的实现,效率很高但是线程不安全,在银行或者记账的场景中需要谨慎的使用这个集合类。
示例1.ConcurrentModificationException() removeIf
boolean add(E e);
boolean remove(Object o); 线程是不安全的,多线程下面没有使用synchronized或者lock关键字修饰,所以在多线程下面做添加或者删除操作很容易出现ConcurrentModificationException异常。这个即时多线程条件下面出现的一个异常。面试时候也会经常的提到ConcurrentModificationException这个异常会出现在哪里?我开发三年了,今年才突然醒悟这个出现在这里。下面源码里面可以查找一下没有使用任何的原子类,所以说这个类不是线程安全的。
package java.util;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.function.UnaryOperator;
import sun.misc.SharedSecrets;
/**
*<tt>列表</tt>接口的可调整大小的数组实现。工具
*所有可选的列表操作,并允许所有元素&#