介绍一下Atomic 原子类

Atomic,意指原子性,常用于多线程编程中,表示某个操作如同原子一样不可分割,不会被其他线程中断。原子类提供了在并发环境下确保数据一致性的机制,保证了操作的完整性。

Atomic 翻译成中文是原子的意思。在化学上,我们知道原子是构成一般物质的最小单位,在化学反应中是不可分割的。在我们这里 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。

所以,所谓原子类说简单点就是具有原子/原子操作特征的类。

Atomic 翻译成中文是“原子”的意思。在化学上,原子是构成物质的最小单位,在化学反应中不可分割。在编程中,Atomic 指的是一个操作具有原子性,即该操作不可分割、不可中断。即使在多个线程同时执行时,该操作要么全部执行完成,要么不执行,不会被其他线程看到部分完成的状态 [^1]。 在 Atomic 包里一共有 12 个,有四种原子更新方式,分别是原子更新基本型、原子更新数组、原子更新引用和原子更新字段。Atomic 包里的基本都是使用 Unsafe 实现的包装 [^2]。以下是不同型的具体介绍及部分使用示例: ### 基本型 - **AtomicInteger**:整型原子,用于以原子方式更新整型值。示例代码如下: ```python import java.util.concurrent.atomic.AtomicInteger; public class AtomicIntegerExample { public static void main(String[] args) { AtomicInteger atomicInteger = new AtomicInteger(0); // 以原子方式将当前值加 1 int result = atomicInteger.incrementAndGet(); System.out.println(result); } } ``` - **AtomicLong**:长整型原子,用于以原子方式更新长整型值。 - **AtomicBoolean**:布尔型原子,用于以原子方式更新布尔值 [^2][^4]。 ### 引用型 - **AtomicReference**:原子更新引用型。 - **AtomicMarkableReference**:带有标记位的原子引用型。 - **AtomicStampedReference**:原子更新带有版本号的引用型。该将整数值与引用关联起来,可用于解决原子的更新数据和数据的版本号,可以解决使用 CAS 进行原子更新时可能出现的 ABA 问题 [^2][^3]。 ### 数组型 - **AtomicIntegerArray**:原子更新整型数组里的元素。 - **AtomicLongArray**:原子更新长整型数组里的元素。 - **AtomicReferenceArray**:原子更新引用型数组里的元素 [^2]。 ### 原子更新字段 - **AtomicIntegerFieldUpdater**:原子更新整型字段的更新器。 - **AtomicLongFieldUpdater**:原子更新长整型字段的更新器。 - **AtomicReferenceFieldUpdater**:原子更新引用型里的字段 [^2][^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值