目录
1.什么是CAS? ---比较并交换(compare and swap)
1.什么是CAS? ---比较并交换(compare and swap)
它是一条并发原语,atomicInteger(原子Integer)里面就是通过CAS实现原子性的,可以知道,CAS其实就是atomicInteger原子类的低层实现方式。
1.1 AtomicInteger是什么?
之前,我们学volatile 的时候知道,volatile不保证原子性,在多线程环境下执行i++的时候,会发生意想不到的结果。为了让i++此类的操作在多线程环境下是原子操作(如果有对原子性不理解的可以参考 原子性 ),在jdk1.5之后,出现了JUC(java.util.concurrent),里面有个AtomicInteger类就是用来保证i++这个操作是原子的,atomicInteger(原子Integer)里面就是通过CAS实现原子性的。
1.2 AtomicInteger 小Demo
AtomicInteger atomicInteger = new AtomicInteger(5);
System.out.println(atomicInteger.compareAndSet(5,2019)+" "+ atomicInteger.get());
System.out.println(atomicInteger.compareAndSet(5,1024)+" "+atomicInteger.get());
//result
true 2019
false 2019
AtomicInteger的讲解 可以参考 AtomicInteger类的理解与使用