2012-11-30 113 views
3

我們有一個類Document,它使用Map<String, Object>類型的私人成員作爲存儲。這種類型的對象保存在內存中,並且(經常)被(可能)多個線程修改。也可能發生這些對象(或者特別是底層地圖)根據請求通過HTTP序列化出來的情況。序列化格式是JSON,並在使用該庫目前是谷歌的Gson序列化爲Json時避免ConcurrentModificationException?

當序列化同時發生,爲引入新的Map.Entry我們看到ConcurrentModificationExceptions修改。這很直觀,因爲Gson可能正在迭代正在修改的entrySet

我們該如何避免這種情況?我們是否需要求助於始終將地圖的深層副本傳遞給Gson?在那種情況下,如果地圖可以包含所有Json基元,包括ListMap,那麼如何實現所述深層副本?

+0

你是如何控制這個Map的線程安全的呢? – jtahlborn

回答

3

雖然我懷疑序列化正在更新如此頻繁,使用ConcurrentHashMap至少應該減輕你的併發問題對象的智慧。

相關問題