Java 面试题
目录

Java 中什么是原子类?

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

推荐答案

在Java中,原子类是指那些提供原子操作的类,这些操作在多线程环境下能够保证线程安全。Java的java.util.concurrent.atomic包中提供了多种原子类,如AtomicInteger、AtomicLong、AtomicBoolean等。这些类通过使用底层的CAS(Compare-And-Swap)操作来实现原子性,从而避免了使用锁的开销。

本题详细解读

什么是原子操作?

原子操作是指一个操作在执行过程中不会被其他线程打断,要么全部执行成功,要么全部不执行。在多线程环境下,原子操作能够确保数据的一致性和线程安全。

Java中的原子类

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

  • AtomicInteger:提供对int类型的原子操作。
  • AtomicLong:提供对long类型的原子操作。
  • AtomicBoolean:提供对boolean类型的原子操作。
  • AtomicReference<V>:提供对引用类型的原子操作。
  • AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray<E>:提供对数组类型的原子操作。

CAS(Compare-And-Swap)操作

CAS是一种无锁算法,它通过比较内存中的值与期望值,如果相等则更新为新值,否则不做任何操作。CAS操作是原子性的,因此在多线程环境下能够保证线程安全。

原子类的使用场景

原子类通常用于以下场景:

  • 计数器:如AtomicInteger可以用于实现线程安全的计数器。
  • 标志位:如AtomicBoolean可以用于实现线程安全的标志位。
  • 引用更新:如AtomicReference可以用于实现线程安全的引用更新。

示例代码

在这个示例中,AtomicInteger用于实现一个线程安全的计数器,多个线程并发地增加计数器的值,最终输出的结果是正确的。