首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java序列化导致并发修改异常

Java序列化导致并发修改异常
EN

Stack Overflow用户
提问于 2011-04-10 06:01:44
回答 5查看 1.9K关注 0票数 1

我的程序每秒更新数百个存储在ArrayList中的对象大约100次。我已经实现了Java的内置序列化,它工作得很好,除非在对象运行时尝试序列化,在这种情况下,我可能需要序列化六次才能正常工作(每次失败的尝试都会抛出一个异常)。我尝试将arraylist标记为临时的,但是当我加载序列化文件时,抛出了一个空指针异常。因此,我尝试在no args构造函数中初始化临时数组列表,但这没有任何帮助。我做什么好?谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-10 06:12:05

首先,确保同步了对ArrayList的访问,例如,在初始化它时:

代码语言:javascript
运行
复制
List<String> list = Collections.synchronizedList(new ArrayList<String>());

当你需要序列化它时,抓取一个由于同步而保持一致的副本:

代码语言:javascript
运行
复制
List<String> copy = new ArrayList<String>(list);

现在,您可以安全地序列化此副本,而不会阻止对主列表的访问。

票数 3
EN

Stack Overflow用户

发布于 2011-04-10 06:04:18

您不能使用foreach语句迭代并修改您的表。

试着使用

代码语言:javascript
运行
复制
for (int i =0;i<arra.length;i++) 

而不是。

票数 0
EN

Stack Overflow用户

发布于 2011-04-10 06:04:51

ArrayList复制到新实例(使用new ArrayList<>()进行浅层复制并序列化它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5608223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档