AtomicInteger addAndGet()和getAndAdd()之间的Java差异?

时间:2016-02-18 16:50:50

标签: java

addAndGetgetAndAddAtomic*类的AtomicIntegerAtomicLong方法之间有什么区别?

Javadoc没有列出任何差异:

  

addAndGet(long delta)   以原子方式将给定值添加到当前值。

     

getAndAdd(long delta)   以原子方式将给定值添加到当前值。

2 个答案:

答案 0 :(得分:9)

区别在于它们返回的内容,类似于预增量(例如++i)和后增量(例如i++)运算符。

The addAndGet method

  

返回:

     

更新后的值

The getAndAdd method

  

返回:

     

以前的值

答案 1 :(得分:3)

正如评论中已经回答的那样:这是前后增量。试试吧:

groovy:000> import java.util.concurrent.atomic.*
===> java.util.concurrent.atomic.*
groovy:000> a = new AtomicLong(0)
===> 0
groovy:000> a.addAndGet(1)
===> 1
groovy:000> a
===> 1
groovy:000> a.getAndAdd(2)
===> 1
groovy:000> a
===> 3