List
ArrayList非线性安全,体现在多个线程add值的时候数组下标没有相应移动导致值相互覆盖丢失与多线程add值时扩容机制有可能判断失误判断为不需要扩容,导致最终条件的元素超过数组大小越界异常。线性安可使用CopyonwriteList读写分离,写入移除元素时加锁。ArrayList每次扩容siz*3/2+1,遍历时不允许修改List元素个数,每次遍历输出元素时校验修改次数,如果修改次数与开始遍历时不一致时抛出ConcurrentModificationException。每次移除元素后置空最后一个元素方便gc