AtomicInteger基本使用
下文笔者讲述AtomicInteger类的示例简介说明,如下所示
public final int updateAndGet(IntUnaryOperator updateFunction)
AtomicInteger示例1分享
public class TestAtomic` {
public static void main(String[] args) {
AtomicInteger i = new AtomicInteger(0);
System.out.println(i.incrementAndGet()); //++i;
System.out.println(i.getAndIncrement()); //i++;
System.out.println(i.getAndAdd(88)); //先获取i,再加88
System.out.println(i.addAndGet(88)); //先加88,在获取i
}
}
进阶用法
AtomicInteger方法public final int updateAndGet(IntUnaryOperator updateFunction)
实现方式--CAS
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.IntUnaryOperator;
public class TestAtomic {
public static void main(String[] args) {
AtomicInteger i = new AtomicInteger(0);
i.updateAndGet(x -> x + 88);
//自定义实现的
int i1 = TestAtomic.updateAndGet(i, x -> x + 88);
System.out.println(i1);
}
/**
* 手写实现一个updateAndSet方法
* @param i
* @param operator
* @return
*/
public static int updateAndGet(AtomicInteger i,IntUnaryOperator operator){
while(true){
int prev = i.get();
int next = operator.applyAsInt(prev);
if(i.compareAndSet(prev,next)){
return i.get();
}
}
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


