我的程序每秒更新数百个存储在ArrayList中的对象大约100次。我已经实现了Java的内置序列化,它工作得很好,除非在对象运行时尝试序列化,在这种情况下,我可能需要序列化六次才能正常工作(每次失败的尝试都会抛出一个异常)。我尝试将arraylist标记为临时的,但是当我加载序列化文件时,抛出了一个空指针异常。因此,我尝试在no args构造函数中初始化临时数组列表,但这没有任何帮助。我做什么好?谢谢。
发布于 2011-04-10 06:12:05
首先,确保同步了对ArrayList的访问,例如,在初始化它时:
List<String> list = Collections.synchronizedList(new ArrayList<String>());当你需要序列化它时,抓取一个由于同步而保持一致的副本:
List<String> copy = new ArrayList<String>(list);现在,您可以安全地序列化此副本,而不会阻止对主列表的访问。
发布于 2011-04-10 06:04:18
您不能使用foreach语句迭代并修改您的表。
试着使用
for (int i =0;i<arra.length;i++) 而不是。
发布于 2011-04-10 06:04:51
将ArrayList复制到新实例(使用new ArrayList<>()进行浅层复制并序列化它。
https://stackoverflow.com/questions/5608223
复制相似问题