您能否帮助我掌握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
与ai.accumulateAndGet(y, (x, y) -> x * y);
...也可以用
updateAndGet
实现,但是在某些情况下,如果您已经有两个参数的操作,使用起来可能会更简单。关于java - 一些AtomicInteger方法的实际示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33996362/