Java中CAS算法的原子操作是如何实现的?

更新于
2026-08-02 10:23:16
16阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1648个文字,预计阅读时间需要7分钟。

Java中CAS算法的原子操作是如何实现的?

CAS(Compare And Set)是一种用于解决多线程并行情况下使用锁造成的性能损耗的机制。它包含三个操作数——内存位置(V)、预期原值(A)和新值。

一、CAS(Compare And Set)

Compare And Set(或Compare And Swap),CAS是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V)、预期原值(A)、新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在CAS指令之前返回该位置的值。CAS有效地说明了“我认为位置V应该包含值A;如果包含该值,则将B放到这个位置;否则,不要更改该位置,只告诉我这个位置现在的值即可。

​ 在java中可以通过锁和循环CAS的方式来实现原子操作。Java中 java.util.concurrent.atomic包相关类就是 CAS的实现,atomic包里包括以下类:

AtomicBoolean 可以用原子方式更新的boolean值。 AtomicInteger 可以用原子方式更新的int值。 AtomicIntegerArray 可以用原子方式更新其元素的int数组。

阅读全文

本文共计1648个文字,预计阅读时间需要7分钟。

Java中CAS算法的原子操作是如何实现的?

CAS(Compare And Set)是一种用于解决多线程并行情况下使用锁造成的性能损耗的机制。它包含三个操作数——内存位置(V)、预期原值(A)和新值。

一、CAS(Compare And Set)

Compare And Set(或Compare And Swap),CAS是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V)、预期原值(A)、新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在CAS指令之前返回该位置的值。CAS有效地说明了“我认为位置V应该包含值A;如果包含该值,则将B放到这个位置;否则,不要更改该位置,只告诉我这个位置现在的值即可。

​ 在java中可以通过锁和循环CAS的方式来实现原子操作。Java中 java.util.concurrent.atomic包相关类就是 CAS的实现,atomic包里包括以下类:

AtomicBoolean 可以用原子方式更新的boolean值。 AtomicInteger 可以用原子方式更新的int值。 AtomicIntegerArray 可以用原子方式更新其元素的int数组。

阅读全文