您能否帮我掌握 AtomicInteger 类的一些方法的要点:updateAndGet
, accumulateAndGet
.
为什么第一个IntUnaryOperator
作为参数接收?什么逻辑可以潜在地应用在这个接口的功能方法中?int
我的想法是,获得简单的价值会更容易。(与IntBinaryOperator
界面相同)。
提前致谢。
您能否帮我掌握 AtomicInteger 类的一些方法的要点:updateAndGet
, accumulateAndGet
.
为什么第一个IntUnaryOperator
作为参数接收?什么逻辑可以潜在地应用在这个接口的功能方法中?int
我的想法是,获得简单的价值会更容易。(与IntBinaryOperator
界面相同)。
提前致谢。
如果您想以原子方式将存储在 中的值加倍AtomicInteger
,那么在编写 Java 8 之前您可以做的最好的事情
while (true) {
int x = ai.get();
if (ai.compareAndSet(x, 2 * x)) {
return 2 * x;
}
}
...但是 Java 8 允许您编写例如
ai.updateAndGet(x -> 2 * x);
...并且accumulateAndGet
会,比如说,让你原子地ai
乘以y
with
ai.accumulateAndGet(y, (x, y) -> x * y);
...这也可以实现,updateAndGet
但在某些已经有两个参数操作的情况下使用起来可能更简单。