gpt4 book ai didi

java - 返回 int 是 java 中的原子操作吗?

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

// is this atomic? 
public int size() {
return count;
}

请注意,可以通过其他线程中的其他方法更改计数。

我知道整数读取和写入是原子的,但我不确定返回值。

让我感到震惊的是,出于某种原因ArrayBlockingQueue锁定它的 size() 方法。

最佳答案

如您所知,对原始 int 的读取和写入是原子的。返回基本上是读取并放置在内存中的其他地方。由于读取是原子的,因此不会发生竞争条件。您可以返回 int 的上一个或下一个值。

ArrayBlockingQueue 中使用 lock 可能是出于可见性原因。 count 变量不是volatile 所以如果队列在此期间被修改,没有某种锁定你不能保证看到最新 count 的值。但由于读取和写入是原子的,至少您永远不会看到最年轻的 16 位旧值和最旧的 16 位新值。

关于java - 返回 int 是 java 中的原子操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13669065/

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