小编San*_*ich的帖子

在AtomicInteger类中实现addAndGet

我正在为类中的addAndGet方法编写Java(Java 6)源代码AtomicInteger.

相应的代码如下:

public final int addAndGet(int delta) {
    for (;;) {
        int current = get();
        int next = current + delta;
        if (compareAndSet(current, next))
            return next;
    }
}
Run Code Online (Sandbox Code Playgroud)

compareAndSet方法调用本机方法来执行赋值.主要有两个问题:

  1. 无限循环如何帮助?
  2. 可能是什么情况,"if(compareAndSet(current,next))"条件可能返回false?在这种情况下,代码可能会遇到无限循环.如果保证compareAndSet将始终返回"true",那么我们是否可以完全取消此检查?

类似的质疑是与decrementAndGet,getAndDecrement,getAndAdd方法为好.

java synchronization atomic java-6

4
推荐指数
1
解决办法
1368
查看次数

标签 统计

atomic ×1

java ×1

java-6 ×1

synchronization ×1