ConcurrentHashMap put vs putIfAbsent
JavaDocs diz que,putIfAbsent
é equivalente a
<code> if (!map.containsKey(key)) return map.put(key, value); else return map.get(key); </code>
Portanto, se a chave existir no mapa, ela não atualizará seu valor. Isso está correto?
E se eu quiser atualizar um valor de chaves com base em alguns critérios? Diga o tempo de expiração etc.
Isso seria um melhor impl para adicionar e atualizar o cache?
<code>public void AddToCache(T key, V value) { V local = _cache.putifabsent(key, value); if(local.equals(value) && local.IsExpired() == false){ return; } // this is for updating the cache with a new value _cache.put(key, value); } </code>