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

通过查看JDK的API知道:

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

再进行源代码查看:

  1. public final int getAndIncrement() {
  2. for (;;) {
  3. int current = get();
  4. int next = current + 1;
  5. if (compareAndSet(current, next))
  6. return current ;
  7. }
  8. }
  9. public final int incrementAndGet() {
  10. for (;;) {
  11. int current = get();
  12. int next = current + 1;
  13. if (compareAndSet(current, next))
  14. return next ;
  15. }
  16. }
由此可以看出,两个方法处理的方式都是一样的,区别在于
getAndIncrement
方法是返回旧值(即加1前的原始值),而
incrementAndGet
返回的是新值(即加1后的值)

猜你喜欢

转载自blog.csdn.net/chenkaibsw/article/details/81031950