【并发】第六篇 Atomic原子操作类 - 基本类型类详解

Atomic原子操作类是Java中提供的一组线程安全的基本数据类型操作类,可用于实现线程安全的并发编程。它们可以确保在并发环境下对变量进行原子操作,即不会被其他线程中断或同时修改。常用的基本类型类有AtomicLong和。
摘要由CSDN通过智能技术生成


       Atomic原子操作类是Java中提供的一组线程安全的 基本数据类型操作类,可用于实现 线程安全并发编程。它们可以确保在 并发环境下对变量进行 原子操作,即不会被其他线程 中断同时修改
       Atomic基本数据类型原子操作类, 用于对Java中的 基本类型(如int、long、boolean、double等)进行原子操作,包括 AtomicIntegerAtomicLongAtomicBooleanAtomicDouble等。

AtomicInteger来举例分析:

AtomicInteger

用来实现对整数类型int的原子操作

public class AtomicInteger extends Number implements java.io.Serializable {
   
  private static final long serialVersionUID = 6214790243416807050L;

  /**
   * Unsafe类是一个提供了一组低级别的操作方法的工具类。
   * 它允许我们绕过Java语言的安全限制,直接操作底层的内存和对象
   * 1.直接读写内存:Unsafe类中的方法可以直接读写内存,包括读写基本数据类型、读写对象引用和执行内存复制等。
   * 2.分配和释放内存:Unsafe类提供了分配和释放内存的方法,可以手动控制内存的分配和释放,而不依赖于JVM的垃圾回收机制。
   * 3.对象操作:Unsafe类的方法可以直接操作对象,例如获取和设置对象的字段值、获取对象的地址、创建对象实例等。
   * 4.线程同步和CAS操作:Unsafe类提供了一些原子操作方法,可以用于实现线程同步和CAS(Compare and Swap)操作,用于实现高效的并发编程。
   */
  private static final Unsafe unsafe = Unsafe.getUnsafe();
  private static final long valueOffset;

  static {
   
      try {
   
          valueOffset = unsafe.objectFieldOffset
              (AtomicInteger.class.getDeclaredField("value"));
      } catch (Exception ex) {
    throw new Error(ex); }
  }
  
  /**
   * 核心变量
   * 内部使用的volatile修饰符保证线程可见性
   * volatile是一种轻量级的同步机制,适用于简单变量的读写,可以提供变量的可见性和有序性
   */
  private volatile int value;

  //构造方法,初始化value值
  public AtomicInteger(int initialValue) {
   
      value = initialValue;
  }

  //构造方法,使用默认初始值0
  public AtomicInteger() {
   
  }
  //......省略.......
}

核心原子操作方法

  1. getAndSet(int newValue):设置新的整数值,并返回原来的值。
  2. compareAndSet(int expect, int update):如果当前值等于expect,则将当前值设置为update,返回更新是否成功。
  3. incrementAndGet():将当前值加1,并返回新的值。
  4. addAndGet(int delta):将指定的值delta与当前值相加,并返回新的值
  5. getAndIncrement():将当前值加1,并返回旧的值。

方法使用举例

public class AtomicIntegerModel {
   

   public static void main
  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖界的小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值