我正在处理一个问题声明,需要在 5 分钟后更新作为缓存存储在地图中的对象(来自数据库)
它完成了:
Map <String, String>hashMapParam = new ConcurrentHashMap<>();
if (!this.hashMapParam.isEmpty() && this.hashMapParam.containsKey(key))
{
returnValue = this.hashMapParam.get(key);
if(isThresholdReached(returnValue))
{
refreshParam(logger); //loads data from db
}
}
private void refreshParam()
{
this.hashMapParam.clear();
//loads data from db loadData(); }
我是否需要同步方法refreshParam,因为即使在使用 concurrentHashMap 之后,在使用多个线程进行测试时也得到空值?
如果我同步此方法,则实现工作正常。