都说ArrayList是线程不安全的,那为什么不安全呢.根据官方提供的源码, 我是这样理解的,ArrayList的成员方法都不是原子操作的,比如add(E)方法,该方法是在集合的尾部加入一个一个元素. add(E)源码如下: /** * Appends the specified element to the end of this list. * * @param e element to be appended to this list * @return <tt>true</tt&…
首先需要了解什么是线程安全:线程安全就是说多线程访问同一代码(对象.变量等),不会产生不确定的结果. 既然说ArrayList是线程不安全的,那么在多线程中操作一个ArrayList对象,则会出现不确定的结果.具体是怎样不确定,请看测试下面这段代码(在此测试ArrayList的add方法): public class ArrayListInThread implements Runnable{ //线程不安全 private List threadList = new ArrayList();…