首页 > 其他 > 详细

自己实现updateAndGet()方法

时间:2021-06-17 12:14:03      阅读:10      评论:0      收藏:0      [点我收藏+]
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.IntUnaryOperator;
/**
 * 使用cas实现updateAndGet()方法
 */

public class test1 {
    public static void main(String[] args) {
        AtomicInteger i = new AtomicInteger(10);
        System.out.println("自己实现的updateAndGet()方法");
        System.out.println(updateAndGet(i, value -> value / 2));
    }

    public final static int updateAndGet(AtomicInteger i, IntUnaryOperator operator) {
        while (true) {
            int prev = i.get();
            // int next = prev / 2;    // 这里的表达式写死了,缺乏通用性
            int next = operator.applyAsInt(prev);   // 这里使用的Java8中的函数式编程,具体的运算取决于传入的函数接口
            if (i.compareAndSet(prev, next)) {
                return next;
            }
        }
    }
}

 

自己实现updateAndGet()方法

原文:https://www.cnblogs.com/xiazhenbin/p/14892260.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!