AtomicInteger 中 incrementAndGet与getAndIncrement 两个方法的区别

来源:互联网 发布:判断矩阵的一致性检验 编辑:程序博客网 时间:2024/05/17 22:56

通过查看JDK的API知道:

intincrementAndGet()
          以原子方式将当前值加 1。 intgetAndIncrement()
          以原子方式将当前值加 1。字面解释都一样。

再进行源代码查看:

public final int getAndIncrement() {    for (;;) {        int current = get();        int next = current + 1;        if (compareAndSet(current, next))            return current;    }}public final int incrementAndGet() {    for (;;) {        int current = get();        int next = current + 1;        if (compareAndSet(current, next))            return next;    }}
由此可以看出,两个方法处理的方式都是一样的,区别在于
getAndIncrement
方法是返回旧值(即加1前的原始值),而
incrementAndGet
返回的是新值(即加1后的值)

3 6