gpt4 book ai didi

java - 比较 AtomicInteger 而不设置它

转载 作者:搜寻专家 更新时间:2023-10-31 08:22:29 27 4
gpt4 key购买 nike

如何在不将 AtomicInteger 设置为新值的情况下将 AtomicInteger 与给定的 int 值进行比较?我在 AtomicInteger 中没有看到这样的方法。

最佳答案

by the time get() returns, the value in the AtomicInteger may get updated to a new value... so I may get a stale value

根据定义,如果原子整数中的值在您调用 int i = atomic.get() 后立即更新,您将在 i 中拥有一个过时值。但这正是并发程序的工作方式 - 当您查询一个值时,您知道它可能已经发生了变化。

AtomicInteger::get 保证的是,当您调用它时,您将获得调用时可用的最新值。例如,普通的 int 就没有这种保证。


换句话说,想象一下下面的程序:

if (atomic.get() == 0) print("zero");

即使您有某种compareButNotSet 方法,也无济于事,因为当您到达 print 语句时,atomic 的值可能已经改变了...

如果您需要确保仅当值仍为 0 时才调用 print,则需要同步(或使用锁)整个 block 。

关于java - 比较 AtomicInteger 而不设置它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32865107/

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