ArrayList并非线程安全的容器,这一点大家可能都非常清楚,但是在并发写入的情况下,不安全的情况具体有哪些,大家是否很清楚呢?...值的结果
10
[null, 1, 3, 4, 5, 6, 7, 8, 9, 10]
或者
10
[null, 2, 3, 4, 5, 6, 7, 8, 9, 10]
或者
10
[null, null...由于ArrayList是基于数组实现,由于数组大小一旦确定就无法更改,所以其每次扩容都是将旧数组容器的元素拷贝到新大小的数组中(Arrays.copyOf函数),由于我们通过new ArrayListnull的情况外,还会有其他错误
数量错误,集合数据正确
9
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
大家是不是第一反应是不是觉得这种结果是由ArrayList本身的不安全特效造成的呢...实际上这种结果和ArrayList本身没有关系,只是因为我们打印不具有原子性所造成的。