gpt4 book ai didi

Java 的 AtomicLong 实现循环

转载 作者:行者123 更新时间:2023-12-04 23:00:05 30 4
gpt4 key购买 nike

所以我在使用 AtomicLong 并决定看一下它的实现,并注意到两种方法之间的以下区别:

getAndAdd(long delta):

public final long getAndAdd(long delta) {
while (true) {
long current = get();
long next = current + delta;
if (compareAndSet(current, next))
return current;
}
}

incrementAndGet():

public final long incrementAndGet() {
for (;;) {
long current = get();
long next = current + 1;
if (compareAndSet(current, next))
return next;
}
}

令我感到奇怪的是,这两种方法做的事情几乎完全相同,但它们是使用 2 个不同的循环实现的;第一个是 while,第二个是 for。据我所知,这对性能没有影响。这有什么具体原因吗?

最佳答案

不,Java 中只有两种表达无限循环的方式。普遍认为没有哪个更好。

关于Java 的 AtomicLong 实现循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8758397/

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