addAndGet
或getAndAdd
等Atomic*
类的AtomicInteger
和AtomicLong
方法之间有什么区别?
Javadoc没有列出任何差异:
addAndGet(long delta)
以原子方式将给定值添加到当前值。
getAndAdd(long delta)
以原子方式将给定值添加到当前值。
答案 0 :(得分:9)
区别在于它们返回的内容,类似于预增量(例如++i
)和后增量(例如i++
)运算符。
返回:
更新后的值
返回:
以前的值
答案 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