日期:2014-05-20  浏览次数:21009 次

JAVA中ArrayList是否允许两个线程同时进行插入和删除操作?
RT

------解决方案--------------------
允许,不过因为不是同步,所以同时删除可能会出错,即某个线程删完了,另一个线程再删可能会抛出越界异常
------解决方案--------------------
不可以的,无论更新或者查询同时操作都有可能出问题或者异常结果,建议用vector或者List list = Collections.synchronizedList(new ArrayList(...));

------解决方案--------------------
Vector的好处在于可以是线程安全的,像ArrayList,我们添加一个元素时,先要把下标加1,然后再赋值,所以如果有多个线程同时向一个ArrayList里面添加东西时,由于不是线程安全的所以就有可能出错。我们这时要用ArrayList的话,必须保证ArrayList的add操作必须是线程安全的,要放在synchronized 中,,,,
------解决方案--------------------
可以使用 CopyOnWriteArrayList