自己实现updateAndGet()方法
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; } } } }
作者:Ryanjie
出处:http://www.cnblogs.com/ryanjan/
本文版权归作者和博客园所有,欢迎转载。转载请在留言板处留言给我,且在文章标明原文链接,谢谢!
如果您觉得本篇博文对您有所收获,觉得我还算用心,请点击右下角的 [推荐],谢谢!