💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # 简介 基本类型原子类只能更新一个变量,如果需要原子更新多个变量,需要使用 引用类型原子类。 * **AtomicReference**:引用类型原子类 * **AtomicStampedRerence**:原子更新引用类型里的字段原子类 * **AtomicMarkableReference**:原子更新带有标记位的引用类型 **AtomicReference**和**AtomicInteger**非常类似,不同之处在于**AtomicInteger**是对整数的封装,而**AtomicReference**则是对应普通的对象引用,它可以确保你在修改对象引用时的线程安全性。在介绍**AtomicReference**的同时,我们先来了解一个有关原子操作逻辑上的不足。 # ABA问题 之前我们说过,线程判断被修改对象是否可以正确写入的条件是对象的当前值和期望值是否一致。这个逻辑从一般意义上来说是正确的,但是可能出现一个小小的例外,就是当你获得当前数据后,在准备修改为新值钱,对象的值被其他线程连续修改了两次,而经过这2次修改后,对象的值又恢复为旧值,这样,当前线程就无法正确判断这个对象究竟是否被修改过,这就是所谓的ABA问题,可能会引发一些问题。