2013-04-27 60 views
3

我們使用ConcurrentHashMap維護緩存通常需要刷新緩存什麼是刷新緩存的最佳途徑?ConcurrentHashMap.clear()讀線程會發生什麼?

1.更新緩存,刪除所有舊密鑰。

2.清除緩存並再次從內容中插入新密鑰。

案例1:所有讀取的線程不會被阻塞,一旦更新,它們將獲得更新的值。第二種情況:這裏我的問題當我們要清除緩存時,讀取線程會發生什麼?它們是否會得到空值?

更新緩存的最佳策略是什麼?

回答

2

最可靠的答案像往常一樣在API,它針對這種情況說...對於聚合操作,比如和的putAll清晰,併發檢索可能反映插入或拔出只有一些條目...

+0

所以遵循策略1即更新所有緩存並刪除舊密鑰比策略2好得多嗎? – 2013-04-28 03:29:22

+1

我會選擇策略1,否則在填寫地圖時,讀取線程會變爲空值。 – 2013-04-28 03:46:52

+0

如何使用'synchronized'封裝調用以'clear'調用 – 2017-12-08 20:27:50

相關問題