atomic原子类

9 篇文章 0 订阅

atomic 包描述

java中atomic包结构
java中提供了如上的 原子类;atomic 原子 即原子类的操作都是可以看作是具有原子性的,无锁非阻塞的一种并发实现。核心操作是基于UnSafe类实现的CAS方法,

1. 基本类型原子类
AtomicBoolean
AtomicInteger
AtomicLoing

2. 数组类型原子类
AtomicIntegerArray
AtomicLongArray
AtomicReferenceArray

3. 引用类型原子类
AtomicReference
AtomicStampedReference
AtomicMarkableReference

4. 对象的属性修改类型原子类
AtomicIntegerFieldUpdater
AtomicLongFieldUpdater
AtomicReferenceFieldUpdater

AtomicInteger

API

// 创建一个有默认值的实例
public AtomicInteger(int initialValue)
 // 默认值为0 的
public AtomicInteger() 
  // 设置值
public final void set(int newValue)
// 获取值
public final int get() 
// 设置指定值 并返回旧值
 public final int getAndSet(int newValue) {
        return unsafe.getAndSetInt(this, valueOffset, newValue);
    }
// expect 期望值, update 更新的值,如果atomictInteger的值等于期望值,则更新为更新的值, 返回布尔类型 是否更新成功
  public final boolean compareAndSet(int expect, int update)
// 获取值,然后自增
 public final int getAndIncrement() 
 //获取值, 然后自减
 public final int getAndDecrement()
 // 获取值然后自增指定值
 public final int getAndAdd(int delta)
 //先自增, 然后获取值
 public final int incrementAndGet()
  //先自减, 然后获取值
 public final int decrementAndGet()
 //先增加指定值, 然后获取该值
  public final int addAndGet(int delta)
 // java1.8 之后增加
 //IntUnaryOperator 一个函数, 可以将函数的值进行运算,就是添加了lambda的特新操作上  	  和其他方法类型
 public final int updateAndGet(IntUnaryOperator updateFunction)
 //...

其他的使用都基本类似, 都使用了unsafe 的CSA算法进行的更新 ,这是一种无锁非阻塞的操作方式,比锁性能更好,能使用atomic解决的尽量使用atomic

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值