gpt4 book ai didi

java - AtomicInteger 是否处理同步?

转载 作者:行者123 更新时间:2023-12-01 14:20:37 26 4
gpt4 key购买 nike

如果两个线程都使用 i++ 递增相同的 int i,我们可能会遇到问题,因为 i++ 不是原子操作。这就是为什么有 AtomicInteger.increment(),它使递增原子化。因此,如果我们有 1 个核心和 2 个线程执行 .increment(),则绝对没有问题(因为它不能在操作中间暂停)。

但是如果我们有 2 个内核和 2 个线程并且它们并行(完全同时)调用 increment() 会怎么样?

他们是否有可能加载相同的 int i 值?这意味着如果 int i1,最终结果将是 2 而不是 3。在那种情况下,我们不关心它是否是原子操作,因为它们同时获得相同的值..

底线:同步是由 AtomicInteger 处理的吗?

最佳答案

Could there be possibility that they load same value of int i?

是的,有,但它已为您处理。

incrementAndGet 方法使用原子“比较和设置”操作来设置增量值但前提是尚未设置新值。如果比较失败,incrementAndGet 获取新值并重试。

最终效果是,从多个线程使用 incrementAndGet 是安全的。

关于java - AtomicInteger 是否处理同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63450177/

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