起因:
最近一次的的项目版本迭代中,我们的jstorm项目里面增加了一些新的功能,开发完毕后,按照正常的上线流程,代码是需要在开发,测试和预发布环境,测试完毕后才能上线。...这次上新版本也不例外,在所有的环境都测试之后并无任何问题,然后由OP上线,结果发布失败。...java.util.ArrayList.addAll(ArrayList.java:562)
at ArrayListTest$PutThread.run(ArrayListTest.java:24)
基本确定了是拷贝执行了...= 0;//2
}
多个线程同时执行,当A线程扩容完执行到2处,B线程刚好执行到1,这个时候如果B线程恰巧看到了A线程已经更新过的最新的size的值,就会出现size+numNew大于elementData.length...String[]{"1","2","3","4","5","6","7","8","9","10","11"};
latch.await();//必须等到所有的线程到达之后,才能向下执行