gpt4 book ai didi

java - ConcurrentHashMap 操作是线程安全的

转载 作者:行者123 更新时间:2023-12-01 23:13:48 26 4
gpt4 key购买 nike

ConcurrentHashMap 的 Java 文档说,

even though all operations are thread-safe

当我们说ConcurrentHashMap的所有操作都是线程安全时,是什么意思?

编辑:我的意思是问,假设有 put() 操作。那么根据上面的说法 CHM 中的 put() 是线程安全的。这是什么意思?

最佳答案

来自维基百科:

A piece of code is thread-safe if it only manipulates shared data structures in a manner that guarantees safe execution by multiple threads at the same time.

为了回答您的扩展问题,如果多个线程执行 put() ,效果将是最后一个运行的线程将设置映射中该键的值。所有看跌期权都会按某种顺序发生,但它们不会相互干扰。如果没有并发保证,它们会如何干扰?那么,如果之前没有值与映射或先前的值关联,则 put() 返回 null。如果两个 put 发生在非并发映射上,它们都可以从 put 中获得相同的返回值。

这个序列在没有并发的情况下也是可能的:

Thread1: map.put("key1", "value1") => null

然后

Thread2: map.put("key2", "value2") => "value1"
Thread3: map.put("key3", "value3") => "value1"

如果 Thread3 在 Thread2 之后进入,它可能会看到“value1”而不是“value2”,即使这不是它所替换的内容。这在并发 map 中不会发生。

关于java - ConcurrentHashMap 操作是线程安全的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21525697/

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