java - 序列化为 Json 时避免 ConcurrentModificationException?

标签 java json serialization concurrency

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

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

我们如何避免这种情况?我们是否需要求助于始终将 Map 的深拷贝传递给 Gson?在那种情况下,假设映射可以包含所有 Json 原语,包括 List,您将如何实现所述深拷贝?和 Map

最佳答案

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

关于java - 序列化为 Json 时避免 ConcurrentModificationException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13638331/

相关文章:

javascript - 如何在nodejs应用程序中通过javascript使用azure Microsoft Translator Text的json输出?

javascript - 在 Spotify API Javascript 中搜索轨道 + 添加到服务器

c# - 覆盖 XmlSerialization 的类名

jquery - 如何将 jquery.validate 插件与 jquery.serialize() 结合起来

java.lang.IllegalStateException : Action Bar Tab must have a Callback 错误

java - 将多个参数从 JSP scriptlet out.println 传递给 javascript 函数

java - 具有相同数据的两个数据库报告的时间不同

javascript - 如何在 ng-repeat 中显示 JSON object.array.object?

java - JCodeModel - 如何链接调用方法

PHP反序列化JS序列化的变量字符串