温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java Atomic类有哪些方法

发布时间:2025-04-14 06:47:30 来源:亿速云 阅读:119 作者:小樊 栏目:编程语言

Java中的Atomic类位于java.util.concurrent.atomic包中,它们提供了一系列原子操作方法,用于在多线程环境下进行无锁的线程安全操作。以下是一些常用的Atomic类及其方法:

1. AtomicInteger

  • get(): 获取当前值。
  • set(int newValue): 设置新值。
  • compareAndSet(int expect, int update): 如果当前值等于预期值,则以原子方式将其设置为更新值。
  • getAndIncrement(): 原子地递增当前值并返回旧值。
  • getAndDecrement(): 原子地递减当前值并返回旧值。
  • getAndAdd(int delta): 原子地将给定值加到当前值并返回旧值。
  • accumulateAndGet(int x, IntBinaryOperator accumulatorFunction): 使用给定的累加函数原子地更新当前值并返回旧值。

2. AtomicLong

  • 类似于AtomicInteger,但操作的是长整型(long)。

3. AtomicBoolean

  • get(): 获取当前值。
  • set(boolean newValue): 设置新值。
  • compareAndSet(boolean expect, boolean update): 如果当前值等于预期值,则以原子方式将其设置为更新值。
  • getAndSet(boolean newValue): 原子地设置新值并返回旧值。
  • getAndChange(): 原子地切换当前值并返回旧值。

4. AtomicReference<V>

  • get(): 获取当前引用。
  • set(V newValue): 设置新引用。
  • compareAndSet(V expect, V update): 如果当前引用等于预期值,则以原子方式将其设置为更新值。
  • getAndSet(V newValue): 原子地设置新引用并返回旧引用。
  • weakCompareAndSet(V expect, V update): 类似于compareAndSet,但使用弱一致性模型。

5. AtomicIntegerFieldUpdater

  • compareAndSet(T obj, int expect, int update): 对指定对象的指定字段进行原子比较和设置操作。
  • getAndIncrement(T obj): 对指定对象的指定字段进行原子递增操作。
  • getAndDecrement(T obj): 对指定对象的指定字段进行原子递减操作。
  • getAndAdd(T obj, int delta): 对指定对象的指定字段进行原子加法操作。

6. AtomicLongFieldUpdater

  • 类似于AtomicIntegerFieldUpdater,但操作的是长整型字段。

7. AtomicReferenceFieldUpdater

  • 类似于AtomicIntegerFieldUpdater,但操作的是引用类型字段。

8. AtomicStampedReference<V>

  • compareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp): 使用版本号来避免ABA问题。
  • get(int[] stampHolder): 获取当前引用和版本号。

9. AtomicMarkableReference<V>

  • compareAndSet(V expectedReference, V newReference, boolean expectedMark, boolean newMark): 使用标记位来避免ABA问题。
  • get(int[] markHolder): 获取当前引用和标记位。

这些类和方法提供了高效且线程安全的原子操作,适用于各种并发编程场景。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI