gpt4 book ai didi

java - 将 linkedList 转换为数组列表时出现 ArrayIndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-12-01 07:07:27 26 4
gpt4 key购买 nike

我正在尝试将 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 的并发修改相关。感谢对此的任何帮助。

最佳答案

toArray 失败只是您正在做一些根本危险的事情的一个症状。

来自documentation of LinkedList :

If multiple threads access a linked list concurrently, and at least one of the threads modifies the list structurally, it must be synchronized externally.

您要么需要添加同步(不仅仅是针对 toArray,而是基本上列表的所有使用),或者使用并发集合之一,设计线程安全。

关于java - 将 linkedList 转换为数组列表时出现 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20944024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com