Java并发编程之CAS和AQS
什么是CAS > CAS(compare and swap) ,字面意思比较并交换,是解决多线程并行情况下使用锁造成性能损耗的一种机制. public final boolean compareAndSet(int expect, int update) { return unsafe.compareAndSwapInt(this, valueOffset, expect, update); } > CAS 有三个操作数, valueOffset 内存值, expect 期望值, update 要更新的值。如果内存值( valueOffset )和期望值( expect )是一样的。那么处理器会将该位置的值更新为( update ),否则不做任何操作。 > CAS 有效地说明了“我认为位置 valueOffset 应该包含值 expect ,如果包含该值,则将 update 放到这个位置;否则,不要更改该位置,只告诉我这个位置现在的值即可。”在 Java 中,sun.misc.Unsafe类提供了硬件级别的原子操作来实现这个 CAS,java.util.concurrent包下的大量类都使用了这个Unsafe类的 CAS 操作 CAS的应用 > java.util.concurrent.atomic 包下的类大多数是使用 CAS 实现的,如 AtomicInteger ,