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(); } } } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。