栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java原子操作Atomic

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java原子操作Atomic

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/120854796
本文出自【赵彦军的博客】

Java线程安全StampedLock
Java线程安全Lock、ReentrantLock、ReentrantReadWriteLock
Java线程安全集合总结
Java原子操作Atomic

文章目录
  • AtomicInteger
  • AtomicBoolean
  • AtomicLong
  • AtomicReference
  • AtomicIntegerArray
  • AtomicLongArray

Java的java.util.concurrent包除了提供底层锁、并发集合外,还提供了一组原子操作的封装类,它们位于java.util.concurrent.atomic包。

AtomicInteger

我们以AtomicInteger为例,它提供的主要操作有:

  • 增加值并返回新值:int addAndGet(int delta)
  • 加1后返回新值:int incrementAndGet()
  • 获取当前值:int get()
  • 用CAS方式设置:int compareAndSet(int expect, int update)
AtomicBoolean
AtomicBoolean atomic = new AtomicBoolean(false);
//赋值
atomic.set(true);
//取值
atomic.getAndSet(true);
atomic.get();
AtomicLong
AtomicLong atomic = new AtomicLong(1);
//赋值
atomic.set(1);
//取值
atomic.getAndIncrement();
atomic.incrementAndGet();
atomic.getAndSet(1);
atomic.get();
AtomicReference

定义对象

public class User {
    int id;
    String name;

    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }
}

使用

AtomicReference atomic = new AtomicReference(new User(1, "zhang"));
//赋值
atomic.set(new User(2,"zhao"));
//取值
atomic.getAndSet(new User(3,"xiao"));
atomic.get();
AtomicIntegerArray
AtomicIntegerArray atomic = new AtomicIntegerArray(10);
//赋值
atomic.set(0,1);
//取值
atomic.get(0);
atomic.getAndSet(1,100);
atomic.getAndIncrement(0);  //对下标为0的数据减1
atomic.getAndAdd(0,4);
atomic.getAndDecrement(1); //对下标为1的数据减1
AtomicLongArray

用法和 AtomicIntegerArray 很像,具体用法略

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/336793.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号