前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数组类型原子类

数组类型原子类

作者头像
happyJared
发布2019-07-22 10:56:29
4630
发布2019-07-22 10:56:29
举报
文章被收录于专栏:happyJaredhappyJared

使用原子的方式更新数组里的某个元素

  • AtomicIntegerArray:整形数组原子类
  • AtomicLongArray:长整形数组原子类
  • AtomicReferenceArray :引用类型数组原子类

上面三个类提供的方法几乎相同,所以这里以 AtomicIntegerArray 为例子来介绍。

AtomicIntegerArray 类常用方法

代码语言:javascript
复制
public final int get(int i);  // 获取 index=i 位置元素的值

public final int getAndSet(int i, int newValue);  // 返回 index=i 位置的当前的值,并将其设置为新值:newValue

public final int getAndIncrement(int i);  // 获取 index=i 位置元素的值,并让该位置的元素自增

public final int getAndDecrement(int i);  // 获取 index=i 位置元素的值,并让该位置的元素自减

public final int getAndAdd(int delta);  // 获取 index=i 位置元素的值,并加上预期的值

boolean compareAndSet(int expect, int update);  // 如果输入的数值等于预期值,则以原子方式将 index=i 位置的元素值设置为输入值(update)

public final void lazySet(int i, int newValue);  // 最终 将index=i 位置的元素设置为newValue,使用 lazySet 设置之后可能导致其他线程在之后的一小段时间内还是可以读到旧的值
AtomicIntegerArray 常见方法使用
代码语言:javascript
复制
import java.util.concurrent.atomic.AtomicIntegerArray;

public class AtomicIntegerArrayTest {

    public static void main(String[] args) {
        //  TODO Auto-generated method stub
        int temvalue = 0;
        int[] nums = { 1, 2, 3, 4, 5, 6 };
        AtomicIntegerArray i = new AtomicIntegerArray(nums);
        for (int j = 0; j < nums.length; j++) {
            System.out.println(i.get(j));
        }
        temvalue = i.getAndSet(0, 2);
        System.out.println("temvalue:" + temvalue + ";  i:" + i);
        temvalue = i.getAndIncrement(0);
        System.out.println("temvalue:" + temvalue + ";  i:" + i);
        temvalue = i.getAndAdd(0, 5);
        System.out.println("temvalue:" + temvalue + ";  i:" + i);
    }

}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.07.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • AtomicIntegerArray 常见方法使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档