170 похожих чатов

Привет А что будет если вызвать у ConcurrentHashMap метод computeIfAbsent с

теми же аргументами сразу после такого же вызова, но до того как он (предыдущий) довычислит выражение и положит пару ключ-значение?

7 ответов

17 просмотров

Из доки выходит, что вызовется один раз The supplied function is invoked exactly once per invocation of this method if the key is absent, else not at all. Some attempted update operations on this map by other threads may be blocked while computation is in progress, so the computation should be short and simple.

RAFIZ- Автор вопроса
Alexey Genus 😎
Из доки выходит, что вызовется один раз The suppli...

о спасибо! как-то я сам не нашел а ссыль можно?

RAFIZ
о спасибо! как-то я сам не нашел а ссыль можно?

https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/ConcurrentHashMap.html#computeIfAbsent(K,java.util.function.Function) Или можно просто в IDEA посмотреть

RAFIZ- Автор вопроса
Alexey Genus 😎
https://docs.oracle.com/en/java/javase/17/docs/api...

я в коде провалился и у меня не было описания:) спасибо!

Alexey Genus 😎
Из доки выходит, что вызовется один раз The suppli...

Не вызовется один раз, а первая операция будет блокировать вторую на время своего выполнения, и после окончания первой вызовется вторая, которая собственно уже ничего не будет делать, т.к. значение уже в мапе. Я так понимаю, иначе не обеспечить согласованность.

akalexus
Не вызовется один раз, а первая операция будет бло...

Может быть, я неточно выразился, но я именно это и имел в виду: лямбда второго аргумента не вызовется второй раз, потому что значение уже будет доступно

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта