ArrayList 大家估计都是很熟悉的吧,它是线程安全的吗?
…
答案是 不是线程安全的。
当启动 30个线程进行 添加值 报出错误
java.util.ConcurrentModificationException
这个错误是 由于 多线程并发修改 抛出的错误
我们使用30个线程 进行 添加数据 成功
Vector 的 add 方法 是有 synchronized 同步方法 保证并发执行 但是效率低 。jdk1.2(不推荐使用)
List list =Collections.synchronizedList(new ArrayList<>());
Collections.synchronizedList() 它的底层使用的synchronized 效率低 锁粗粒度比较重 不推荐使用 源码如下
写入时复制 opyOnWriteArrayList 读写分离 源码如下
使用了 juc 的lock 锁(比synchronized轻量)高可以