4

我们有一个Document使用类型的私有成员Map<String, Object>作为存储的类。这种类型的对象保存在内存中,并且(非常频繁地)被(可能)多个线程修改。这些对象(或者,特别是底层 Maps)也会根据请求通过 HTTP 序列化。序列化格式为Json,目前使用的库是谷歌的Gson

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

我们怎样才能避免这种情况?我们是否需要总是将 Map 的深层副本传递给 Gson?在这种情况下,鉴于地图可以包含所有 Json 原语,包括Listand ,您将如何实现所述深拷贝Map

4

1 回答 1

4

虽然我质疑序列化经常更新的对象是否明智,但使用ConcurrentHashMap至少应该可以缓解您的并发问题。

于 2012-11-30T03:21:28.257 回答