并发编程系列之八线程安全List list = new ArrayList()不是线程安全的

断了今生、忘了曾经 提交于 2020-01-25 15:21:06

并发编程系列之八线程安全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>接口的可调整大小的数组实现。工具

*所有可选的列表操作,并允许所有元素,包括

*<tt>空</tt>。除了实现<tt>List</tt>接口之外,

*这个类提供了操作数组大小的方法

*用于内部存储列表。(这个类大致相当于

*<tt>矢量</tt>,但它不同步。)

*

*<p>大小</tt>,<tt>为空</tt>,<tt>获取</tt>,<tt>设置</tt>,

*<tt>迭代器</tt>和<tt>
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!