gpt4 book ai didi

java - ConcurrentHashMap 的计算、computeIfAbsent 和computeIfPresent 方法是完全原子的吗?

转载 作者:行者123 更新时间:2023-12-04 12:37:41 25 4
gpt4 key购买 nike

整个方法调用是原子的还是只是 BiFunction 执行的原子?是阻塞所有键还是只阻塞同一键上的调用?

最佳答案

以下详细信息适用于 OpenJDK Java 11。

这三种方法持有 Node 的锁在 map 中调用方法并更新键/值。该节点通常是哈希桶的节点链或节点树中的第一个节点。在同一存储桶中插入、更新或删除键/值对的并发尝试将被阻止,直到锁定被释放。

(其他版本的 Java 的行为可能有所不同。)

Is the whole method call atomic or is just the BiFunction execution atomic?



整个方法调用。

Is it blocking for all keys or just for the calls on the same key?



介于两者之间;看上面。但是,如果您遵循 javadocs 中的建议,应该没有关系。

" 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 ..."

关于java - ConcurrentHashMap 的计算、computeIfAbsent 和computeIfPresent 方法是完全原子的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59600676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com