3
我們有一個類Document
,它使用Map<String, Object>
類型的私人成員作爲存儲。這種類型的對象保存在內存中,並且(經常)被(可能)多個線程修改。也可能發生這些對象(或者特別是底層地圖)根據請求通過HTTP序列化出來的情況。序列化格式是JSON,並在使用該庫目前是谷歌的Gson
序列化爲Json時避免ConcurrentModificationException?
當序列化同時發生,爲引入新的Map.Entry
我們看到ConcurrentModificationExceptions
修改。這很直觀,因爲Gson可能正在迭代正在修改的entrySet
。
我們該如何避免這種情況?我們是否需要求助於始終將地圖的深層副本傳遞給Gson?在那種情況下,如果地圖可以包含所有Json基元,包括List
和Map
,那麼如何實現所述深層副本?
你是如何控制這個Map的線程安全的呢? – jtahlborn