Код: Выделить всё
ConcurrentMap map = new ConcurrentHashMap();
AtomicBoolean isNew = new AtomicBoolean(false);
String result = map.computeIfAbsent("foo", key -> {
isNew.set(true);
return "bar";
});
result = result + "common op that occurs on both old and new results";
if (isNew.get()) {
// op that occurs only on new results. Must occur after common op.
}
Изменить: меня также беспокоит, насколько хорошо мой код справится с многопоточностью. Если два потока попытаются вычислить один и тот же ключ, я думаю, что они оба могут сообщить true для isNew.
Подробнее здесь: https://stackoverflow.com/questions/610 ... -new-value