Java 在序列化为Json时避免ConcurrentModificationException?

Java 在序列化为Json时避免ConcurrentModificationException?,java,json,serialization,concurrency,Java,Json,Serialization,Concurrency,我们有一个类Document,它使用Map类型的私有成员作为存储。这种类型的对象保存在内存中,并且(非常频繁地)由(可能的)多个线程修改。这些对象(特别是底层映射)也会根据请求通过HTTP进行序列化。序列化格式是Json,当前使用的库是Google的Gson 当序列化作为引入新的Map.Entry的修改同时发生时,我们会看到ConcurrentModificationExceptions。这在直觉上很有意义,因为Gson可能正在迭代正在修改的entrySet 我们如何避免这种情况?我们是否需要将

我们有一个类
Document
,它使用
Map
类型的私有成员作为存储。这种类型的对象保存在内存中,并且(非常频繁地)由(可能的)多个线程修改。这些对象(特别是底层映射)也会根据请求通过HTTP进行序列化。序列化格式是Json,当前使用的库是Google的
Gson

当序列化作为引入新的
Map.Entry
的修改同时发生时,我们会看到
ConcurrentModificationExceptions
。这在直觉上很有意义,因为Gson可能正在迭代正在修改的
entrySet


我们如何避免这种情况?我们是否需要将地图的深度副本始终传递给Gson?在这种情况下,如果映射可以包含所有Json原语,包括
List
map
,那么您将如何实现上述深度复制?

而我怀疑序列化频繁更新的对象是否明智,使用映射至少可以缓解您的并发问题。

您首先是如何控制此映射的线程安全的?