高并发编程之AtomicIntegerArray讲解

本文深入介绍了AtomicIntegerArray类,这是Java并发包中用于提供原子操作的整数数组实现。文章详细解释了AtomicIntegerArray的基本使用方法,包括创建、设置值、获取长度、原子更新等常见操作,以及比较并交换、递增、递减等高级功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、AtomicIntegerArray介绍
AtomicIntegerArray可以用原子方式更新其元素的 int 数组,是对Integer数组支持的原子性操作

二、AtomicIntegerArray的几个常用的方法代码实例
①、创建给定长度的新 AtomicIntegerArray。

package chapter3.atomicintegerarray;

import java.util.concurrent.atomic.AtomicIntegerArray;

/**
 * @author czd
 */
public class AtomicIntegerArrayTest {
    public static void main(String[] args) {
        //1、创建给定长度的新 AtomicIntegerArray。
        AtomicIntegerArray atomicIntegerArray = new AtomicIntegerArray(10);
        //2、将位置 i 的元素设置为给定值,默认值为0
        atomicIntegerArray.set(9,10);
        System.out.println("Value: " + atomicIntegerArray.get(9) + "默认值:" + atomicIntegerArray.get(0));
    }
}

②、length()方法:返回该数组的长度

package chapter3.atomicintegerarray;

import java.util.concurrent.atomic.AtomicIntegerArray;

/**
 * @author czd
 */
public class AtomicIntegerArrayTest {
    public static void main(String[] args) {
        //3、返回该数组的长度
        AtomicIntegerArray atomicIntegerArray1 = new AtomicIntegerArray(10);
        System.out.println("数组长度:" + atomicIntegerArray1.length());
    }
}

③、addAndGet()方法:以原子方式先对给定下标加上特定的值,再获取相加后的值

package chapter3.atomicintegerarray;

import java.util.concurrent.atomic.AtomicIntegerArray;

/**
 * @author czd
 */
public class AtomicIntegerArrayTest {
    public static void main(String[] args) {
        //4、以原子方式先对给定下标加上特定的值,再获取相加后的值
        AtomicIntegerArray atomicIntegerArray2 = new AtomicIntegerArray(10);
        atomicIntegerArray2.set(5,10);
        System.out.println("Value: " + atomicIntegerArray2.get(5));
        atomicIntegerArray2.addAndGet(5,10);
        System.out.println("Value: " + atomicIntegerArray2.get(5));
    }
}

④、compareAndSet()方法:如果当前值 == 预期值,则以原子方式将位置 i 的元素设置为给定的更新值。

package chapter3.atomicintegerarray;

import java.util.concurrent.atomic.AtomicIntegerArray;

/**
 * @author czd
 */
public class AtomicIntegerArrayTest {
    public static void main(String[] args) {
        //5、如果当前值 == 预期值,则以原子方式将位置 i 的元素设置为给定的更新值。
        AtomicIntegerArray atomicIntegerArray3 = new AtomicIntegerArray(10);
        atomicIntegerArray3.set(5,10);
        System.out.println("当前值: " + atomicIntegerArray3.get(5));
        Boolean bool = atomicIntegerArray3.compareAndSet(5,10,30);
        System.out.println("结果值: " + atomicIntegerArray3.get(5) + " Result: " + bool);
    }
}

⑤、decrementAndGet()方法:以原子方式先将当前下标的值减1,再获取减1后的结果

package chapter3.atomicintegerarray;

import java.util.concurrent.atomic.AtomicIntegerArray;

/**
 * @author czd
 */
public class AtomicIntegerArrayTest {
    public static void main(String[] args) {
        //6、以原子方式先将当前下标的值减1,再获取减1后的结果
        AtomicIntegerArray atomicIntegerArray4 = new AtomicIntegerArray(10);
        atomicIntegerArray4.set(5,10);
        System.out.println("下标为5的值为:" + atomicIntegerArray4.get(5));
        Integer result1 = atomicIntegerArray4.decrementAndGet(5);
        System.out.println("result1的值为:" + result1);
        System.out.println("下标为5的值为:" + atomicIntegerArray4.get(5));
    }
}

⑥、getAndAdd()方法:以原子方式先获取当前下标的值,再将当前下标的值加上给定的值

package chapter3.atomicintegerarray;

import java.util.concurrent.atomic.AtomicIntegerArray;

/**
 * @author czd
 */
public class AtomicIntegerArrayTest {
    public static void main(String[] args) {
        //7、以原子方式先获取当前下标的值,再将当前下标的值加上给定的值
        AtomicIntegerArray atomicIntegerArray5 = new AtomicIntegerArray(10);
        atomicIntegerArray5.set(5,10);
        Integer result2 = atomicIntegerArray5.getAndAdd(5,5);
        System.out.println("result2的值为:" + result2);
        System.out.println("下标为5的值为:" + atomicIntegerArray5.get(5));

    }
}

⑦、getAndDecrement()方法:以原子方式先获取当前下标的值,再对当前下标的值减1

package chapter3.atomicintegerarray;

import java.util.concurrent.atomic.AtomicIntegerArray;

/**
 * @author czd
 */
public class AtomicIntegerArrayTest {
    public static void main(String[] args) {
        //8、 以原子方式先获取当前下标的值,再对当前下标的值减1
        AtomicIntegerArray atomicIntegerArray6 = new AtomicIntegerArray(10);
        atomicIntegerArray6.set(1,10);
        System.out.println("下标为1的值为:" + atomicIntegerArray6.get(1));
        Integer result3 = atomicIntegerArray6.getAndDecrement(1);
        System.out.println("result3的值为:" + result3);
        System.out.println("下标为1的值为:" + atomicIntegerArray6.get(1));
    }
}

⑧、getAndIncrement()方法:以原子方式先获取当前下标的值,再对当前下标的值加1

package chapter3.atomicintegerarray;

import java.util.concurrent.atomic.AtomicIntegerArray;

/**
 * @author czd
 */
public class AtomicIntegerArrayTest {
    public static void main(String[] args) {
        //9、 以原子方式先获取当前下标的值,再对当前下标的值加1
        AtomicIntegerArray atomicIntegerArray7 = new AtomicIntegerArray(10);
        atomicIntegerArray7.set(2,10);
        System.out.println("下标为2的值为:" + atomicIntegerArray7.get(2));
        Integer result4 = atomicIntegerArray7.getAndIncrement(2);
        System.out.println("result4的值为:" + result4);
        System.out.println("下标为2的值为:" + atomicIntegerArray7.get(2));
    }
}

⑨、getAndSet()方法:将位置 i 的元素以原子方式设置为给定值,并返回旧值。

package chapter3.atomicintegerarray;

import java.util.concurrent.atomic.AtomicIntegerArray;

/**
 * @author czd
 */
public class AtomicIntegerArrayTest {
    public static void main(String[] args) {
        //10、将位置 i 的元素以原子方式设置为给定值,并返回旧值。
        AtomicIntegerArray atomicIntegerArray8 = new AtomicIntegerArray(10);
        atomicIntegerArray8.set(3,10);
        System.out.println("下标为3的值为:" + atomicIntegerArray8.get(3));
        Integer result5 = atomicIntegerArray8.getAndSet(3,50);
        System.out.println("result5的值为:" + result5);
        System.out.println("下标为3的值为:" + atomicIntegerArray8.get(3));
    }
}

⑩、incrementAndGet()方法:以原子方式先对下标加1再获取值

package chapter3.atomicintegerarray;

import java.util.concurrent.atomic.AtomicIntegerArray;

/**
 * @author czd
 */
public class AtomicIntegerArrayTest {
    public static void main(String[] args) {
        //11、 以原子方式先对下标加1再获取值
        AtomicIntegerArray atomicIntegerArray9 = new AtomicIntegerArray(10);
        atomicIntegerArray9.set(4,10);
        System.out.println("下标为4的值为:" + atomicIntegerArray9.get(4));
        Integer result6 = atomicIntegerArray9.incrementAndGet(4);
        System.out.println("result6的值为:" + result6);
        System.out.println("下标为4的值为:" + atomicIntegerArray9.get(4));
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值