将函数,变为,参数传入
1. 是一个接口,就是将一个对int类型的操作当一个参数传入进来。
关键函数:applyAsInt(int operand)
对一个参数operand进行一些操作,最后返回个int类型。
package _4; import java.util.function.IntUnaryOperator; public class MyIntUnaryOperator { private static int value = 1; public static void main(String[] args) { My1 my1 = new My1(); System.out.println(getAndUpdate(my1)); } //将这个操作当成参数传入, public static int getAndUpdate(IntUnaryOperator intUnaryOperator){ int next ; //获取一个value,对他进行一些操作,直接得到next next = intUnaryOperator.applyAsInt(MyIntUnaryOperator.value); return next; } //定义一个类实现这个接口 public static class My1 implements IntUnaryOperator{ @Override public int applyAsInt(int operand) { return operand + 1; } } }
2. 在AtomicInteger中的应用
首先获取到原来的值,然后,进行一些操作,最后更新它
next = updateFunction.applyAsInt(prev); 获取并计算新的结果,最后调用compareAndset函数进行更新操作。。
public final int getAndUpdate(IntUnaryOperator updateFunction) { int prev, next; do { prev = get(); next = updateFunction.applyAsInt(prev); } while (!compareAndSet(prev, next)); return prev; }