Java 面试题
目录

Java 中常用的原子类有哪些?

· 约 3 分钟读完 · 第 66 / 274 章

推荐答案

Java 中常用的原子类主要包括以下几类:

  1. 基本类型原子类:

    • AtomicInteger:用于对 int 类型进行原子操作。
    • AtomicLong:用于对 long 类型进行原子操作。
    • AtomicBoolean:用于对 boolean 类型进行原子操作。
  2. 数组类型原子类:

    • AtomicIntegerArray:用于对 int[] 类型进行原子操作。
    • AtomicLongArray:用于对 long[] 类型进行原子操作。
    • AtomicReferenceArray:用于对引用类型数组进行原子操作。
  3. 引用类型原子类:

    • AtomicReference:用于对引用类型进行原子操作。
    • AtomicStampedReference:用于对引用类型进行原子操作,并带有版本号(解决ABA问题)。
    • AtomicMarkableReference:用于对引用类型进行原子操作,并带有标记位。
  4. 字段更新器:

    • AtomicIntegerFieldUpdater:用于对对象的 int 字段进行原子更新。
    • AtomicLongFieldUpdater:用于对对象的 long 字段进行原子更新。
    • AtomicReferenceFieldUpdater:用于对对象的引用字段进行原子更新。

本题详细解读

1. 基本类型原子类

  • AtomicInteger:提供了对 int 类型的原子操作,如 getAndIncrement()、compareAndSet() 等。适用于多线程环境下对 int 变量的原子操作。

  • AtomicLong:类似于 AtomicInteger,但用于 long 类型的原子操作。

  • AtomicBoolean:提供了对 boolean 类型的原子操作,如 compareAndSet()、getAndSet() 等。

2. 数组类型原子类

  • AtomicIntegerArray:提供了对 int[] 类型的原子操作,允许对数组中的每个元素进行原子操作。

  • AtomicLongArray:类似于 AtomicIntegerArray,但用于 long[] 类型的原子操作。

  • AtomicReferenceArray:提供了对引用类型数组的原子操作,允许对数组中的每个元素进行原子操作。

3. 引用类型原子类

  • AtomicReference:提供了对引用类型的原子操作,适用于多线程环境下对对象的引用进行原子更新。

  • AtomicStampedReference:在 AtomicReference 的基础上增加了版本号(stamp),用于解决ABA问题。

  • AtomicMarkableReference:在 AtomicReference 的基础上增加了标记位(mark),用于标记引用是否被修改过。

4. 字段更新器

  • AtomicIntegerFieldUpdater:用于对对象的 int 字段进行原子更新,适用于需要原子更新对象字段的场景。

  • AtomicLongFieldUpdater:类似于 AtomicIntegerFieldUpdater,但用于 long 类型的字段。

  • AtomicReferenceFieldUpdater:用于对对象的引用字段进行原子更新,适用于需要原子更新对象引用字段的场景。

这些原子类都位于 java.util.concurrent.atomic 包中,提供了无锁的线程安全操作,适用于高并发场景。