我的程序每秒更新大约一百次存储在 ArrayList 中的数百个对象。我已经实现了 Java 的内置序列化,它运行良好,除非在对象运行时尝试序列化,在这种情况下,我可能必须序列化六次才能工作(每次失败的尝试都会抛出一个异常(exception))。我尝试将 arraylist 标记为 transient ,但是当我加载序列化文件时,抛出了一个空指针异常。所以我尝试在无参数构造函数中初始化 transient 数组列表,但没有任何帮助。我该怎么办?谢谢。
最佳答案
首先确保您已同步访问您的ArrayList
,例如当你初始化它时:
List<String> list = Collections.synchronizedList(new ArrayList<String>());
当你需要序列化它时,抓取一份由于同步而保持一致的副本:
List<String> copy = new ArrayList<String>(list);
现在您可以安全地序列化此副本,而不会阻止对主列表的访问。
关于Java序列化导致并发修改异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5608223/