2024-08-04  阅读(0)
版权声明:本文为博主付费文章,严禁任何形式的转载和摘抄,维权必究。 本文链接:https://www.skjava.com/mianshi/baodian/detail/1129508543

回答

Java 的原子操作类是位于 java.util.concurrent.atomic 包中的类,他们主要用于确保在多线程环境下对某些变量的操作是原子操作。

在多线程环境下,对单个变量进行操作,会出现多线程安全问题,导致数据不一致,为了避免这种情况发生,我们可以使用同步机制,比如 synchronized 或者 Lock,但是他们成本太高了,而原子操作类则提供了一种高效的方法来实现线程安全操作。

Java 提供了 12 个原子操作类,共分为四大类。

一、原子更新基本类

  • AtomicBoolean:原子更新布尔值。
  • AtomicInteger:原子更新整数值。
  • AtomicLong: 原子更新长整数值。

二、原子更新数组

  • AtomicIntegerArray:原子更新整数数组中的元素。
  • AtomicLongArray:原子更新长整数数组中的元素。
  • AtomicReferenceArray:原子更新引用类型数组中的元素。

三、原子更新引用类型

  • AtomicReference:原子更新引用类型变量
  • AtomicMarkableReference:原子更新带有标记位的引用类型变量
  • AtomicStampedReference:原子更新带有版本戳的引用类型变量

四、原子更新字段类型

  • AtomicIntegerFieldUpdater:原子更新某个类中的 int 字段。
  • AtomicLongFieldUpdater:原子更新某个类中的 long 字段。
  • AtomicReferenceFieldUpdater:原子更新某个类中的引用类型字段。

扩展

整个Java 原子操作类其实底层实现原理都差不多,我们主要掌握其中一到两个就可以了,大明哥以 AtomicIntegerAtomicStampedReference 为例来讲述。