2013-04-27 63 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

相关问题