Есть ли лучший способ определить, вернуло ли ComputeIfAbsent новое значение?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли лучший способ определить, вернуло ли ComputeIfAbsent новое значение?

Сообщение Anonymous »

У меня есть такой код:

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • ENOENT[undefined] Выполнение вернуло код =-4058 через 0,01 секунды.
    Anonymous » » в форуме Python
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Устройство рисования вернуло двигатель == 0, тип: 1
    Anonymous » » в форуме C++
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Ошибка XCODE: устройство симулятора вернуло ошибку для запрошенной операции. Не удалось создать обещание
    Anonymous » » в форуме IOS
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • ComputeIfAbsent выбрасывает concurrentModificationException
    Anonymous » » в форуме JAVA
    0 Ответы
    76 Просмотры
    Последнее сообщение Anonymous
  • Поддерживает ли метод Java ConcurrentHashMap ComputeIfAbsent() «блокировку» на основе ключей?
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»