【发布时间】:2014-01-06 06:07:19
【问题描述】:
我正在尝试将linkedList 转换为ArrayList,如下所示。
private LinkedList<myData> myLinkedList= new LinkedList<myData>();
public Collection<myData> getData()
{
return new ArrayList<myData>(myLinkedList);
}
linkedList 可能被多个线程更新。在生产中进行测试时,出现以下错误。错误不一致。所以我知道它可能是一周一次,一个月左右。
java.lang.ArrayIndexOutOfBoundsException: 15
at java.util.LinkedList.toArray(LinkedList.java:866)
at java.util.ArrayList.<init>(ArrayList.java:131)
at org.xxx.yyy.zzz.getData(Data.java:291)
有什么方法可以与linkedList的并发修改有关。感谢您对此的任何帮助。
【问题讨论】:
-
是的。您可能应该在您的实例上进行同步。或者使用快速失败的版本。
-
如果你有多个线程修改
LinkedList...是的。当它去复制它分配一个数组,然后遍历列表。显然,您在创建数组后向列表中添加了一个元素,而数组现在太小了。
标签: java arraylist linked-list