一些AtomicInteger方法的实际例子

时间:2015-11-30 10:27:07

标签: java integer atomic atomicinteger

请您帮助我掌握AtomicInteger类的一些方法的要点:updateAndGetaccumulateAndGet

为什么第一个接收IntUnaryOperator作为参数?可以在该接口的功能方法中应用什么逻辑?我的想法是,更容易接受普通的int值。 (与IntBinaryOperator接口相同)。

提前致谢。

1 个答案:

答案 0 :(得分:3)

如果你想将存储在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会让你将aiy原子地相乘

ai.accumulateAndGet(y, (x, y) -> x * y);

...也可以用updateAndGet实现,但在某些已经有两个参数操作的情况下可能更容易使用。