теми же аргументами сразу после такого же вызова, но до того как он (предыдущий) довычислит выражение и положит пару ключ-значение?
Из доки выходит, что вызовется один раз 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.
о спасибо! как-то я сам не нашел а ссыль можно?
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/ConcurrentHashMap.html#computeIfAbsent(K,java.util.function.Function) Или можно просто в IDEA посмотреть
я в коде провалился и у меня не было описания:) спасибо!
Надо жмакнуть "download sources" или "download javadoc"
Не вызовется один раз, а первая операция будет блокировать вторую на время своего выполнения, и после окончания первой вызовется вторая, которая собственно уже ничего не будет делать, т.к. значение уже в мапе. Я так понимаю, иначе не обеспечить согласованность.
Может быть, я неточно выразился, но я именно это и имел в виду: лямбда второго аргумента не вызовется второй раз, потому что значение уже будет доступно
Обсуждают сегодня